root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径

例子:

location ^~/admin {
    alias /var/www/html/admin_project/;
  }

请求为 : /admin/abc.html 时,服务器将会返回服务器上 /var/www/html/admin_project/abc.html 文件
注意:alias后面必须要用“/”结束,而root则可有可无

location ^~/admin {
    root /var/www/html/admin_project/
  }

请求为 : /admin/abc.html 时,服务器将会返回服务器上 /var/www/html/admin_project/admin/abc.html 文件


附上 vue 项目部署配置: 同一个域名 通过 url 解析到不同项目的例子。
访问 abc.net/adminabc.net/customer 分别对应两个项目代码

server {
  listen 80;
  server_name abc.net;
  return 301 https://$server_name$request_uri;
}


server {
  listen 443 ssl http2;
  server_name abc.net;

  ssl_certificate   /etc/nginx/cert/abc.net.pem;
  ssl_certificate_key  /etc/nginx/cert/abc.net.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  ssl_prefer_server_ciphers on;

  location ^~/admin {
    try_files $uri $uri/ /index.html = 404;
    alias /home/deploy/apps/admin_vue/current/dist/;
  }


  location ^~/api/v1/ {
    proxy_pass http://127.0.0.1:17700;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }


  location ^~/customer {
    try_files $uri $uri/ /index.html = 404;
    alias /home/deploy/apps/customer_vue/current/dist/;
  }
}
0条评论 顺序楼层
请先登录再回复