nginx proxy_pass的一些小结
个人学习笔记,谢绝转载!!!
原文:https://www.cnblogs.com/wshenjin/p/13641413.html
proxy_pass
proxy_pass不包含任何路径:
location /sdk/ {
proxy_pass http://1.1.1.1:80;
}
这种情况,会把location匹配到的路径直接穿透转发:
http://127.0.0.1/sdk/aa/bb/cc/ --> http://1.1.1.1/sdk/aa/bb/cc/
proxy_pass包含路径,包含哪怕只有一个/:
location /sdk/ {
proxy_pass http://1.1.1.1:80/login/;
}
这种情况,会去掉url里匹配location字符串(/sdk/),并拼接到proxy_pass指定的路径,再进行转发:
http://127.0.0.1/sdk/aa/bb/cc/ --> http://1.1.1.1/login/aa/bb/cc/
rewrite重写代理连接
使用rewrite,proxy_pass 所指定的路径将被忽略,如:
location /sdk/ {
rewrite ^/sdk/(.*) /$1 break;
proxy_pass http://1.1.1.1:80/login/;
}
这种情况,url不会拼接到proxy_pass指定的路径:
http://127.0.0.1/sdk/aa/bb/cc/ --> http://1.1.1.1/aa/bb/cc/