nginx中配置location的proxy_pas代理转发规则时不同写法对应不同转发规则
访问地址:www.test.com/api/upload
root与alias在location中的区别
一 :proxy_pass
1.location和proxy_pass都带/,则真实地址不带location匹配目录
location /api/{proxy_pass http://127.0.0.1:8080/;}
访问地址:www.test.com/api/upload-->http://127.0.0.1:8080/upload
2.location不带/,proxy_pass带/,则真实地址会带/
location /api{proxy_pass http://127.0.0.1:8080/;}
访问地址: www.test.com/api/upload-->http://127.0.0.1:8080//upload
3.location带/,proxy_pass不带/,则真实地址会带location匹配目录/api/
location /api/{proxy_pass http://127.0.0.1:8080;}
访问地址: www.test.com/api/upload-->http://127.0.0.1:8080/api/upload
4.location和proxy_pass都不带/,则真实地址会带location匹配目录/api/
location /api{proxy_pass http://127.0.0.1:8080;}
访问地址: www.test.com/api/upload-->http://127.0.0.1:8080/api/upload
5.同1,但 proxy_pass带地址
location /api/{proxy_pass http://127.0.0.1:8080/server/;}
访问地址: www.test.com/api/upload-->http://127.0.0.1:8080/server/upload
6.同2,但 proxy_pass带地址,则真实地址会多个/
location /api{proxy_pass http://127.0.0.1:8080/server/;}
访问地址: www.test.com/api/upload-->http://127.0.0.1:8080/server//upload
7.同3,但 proxy_pass带地址,则真实地址会直接连起来
location /api/{proxy_pass http://127.0.0.1:8080/server;}
访问地址: www.test.com/api/upload-->http://127.0.0.1:8080/serverupload(中间没有/)
8.同4,但 proxy_pass带地址,则真实地址匹配地址会替换location匹配目录
location /api{proxy_pass http://127.0.0.1:8080/server;}
访问地址: www.test.com/api/upload-->http://127.0.0.1:8080/server/upload
二 :alias与root的区别
alias 实际访问文件路径不会拼接URL中的路径
root 实际访问文件路径会拼接URL中的路径
示例如下:
location /test {
alias /usr/local/mydata/project/web;
index index.html;
}
请求:https://www.remote.com/test/index.html
实际访问:/usr/local/mydata/project/web/index.html文件
location /demo {
root /usr/local/mydata/project;
index index.html;
}
请求:https://www.remote.com/demo/index.html
实际访问:/usr/local/mydata/project/demo/index.html文件