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/admin
和 abc.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/;
}
}