Nginx之proxy_pass指令url反斜杠作用
随风飘扬 学习 2021年04月22日10:43 1998
在nginx中配置proxy_pass代理转发时;其后面的url中反斜杠/ 的匹配处理时常出现意想不到的问题发生;以下说明两种情况;如果在proxy_pass后面的url加/;表示绝对根路径; 如果在proxy_pass后面的url没有/;表示相对路径;把匹配的路径部分也给代理走。
下面六种情况分别用 http://127.0.0.1/proxy/test.html 进行访问测试
第一种情况:
location /proxy/ { proxy_pass http://127.0.0.1/; }
最终会被代理到URL: http://127.0.0.1/test.html
第二种情况:相对于第一种 最后少一个 /
location /proxy/ { proxy_pass http://127.0.0.1; }
最终会被代理到URL: http://127.0.0.1/proxy/test.html
第三种情况:
location /proxy/ { proxy_pass http://127.0.0.1/aaa/; }
最终会被代理到URL: http://127.0.0.1/aaa/test.html
第四种情况:相对于第三种 最后少一个 /
location /proxy/ { proxy_pass http://127.0.0.1/aaa; }
最终会被代理到URL: http://127.0.0.1/aaatest.html
* 第五种情况:定义了一个正则表达式;那么在URl部分没有转换发生:
location ~ ^/proxy/ { proxy_pass http://127.0.0.1/aaa; }
最终会被代理到URL:http://127.0.0.1/proxy/test.html
最佳写法为:
location ~ ^/proxy/ { proxy_pass http://127.0.0.1; }
* 第六种情况:有rewrite规则改变URl; 那也不会发生转换.
location /proxy/ { rewrite /proxy/(.*)$ /index.php?page=$1 break; # break标记用于立即停止rewrite模块的所有指令 proxy_pass http://127.0.0.1/aaa; }
最终会被代理到URL: http://127.0.0.1/index.php?page=test.html
最佳写法为:
location /proxy/ { rewrite /proxy/(.*)$ /index.php?page=$1 break; proxy_pass http://127.0.0.1; }
声明:凡本网转载的文/图等稿件,均出于传递更多信息及方便探讨之目的,并不意味着本站及主办、承办单位赞同其观点或证实其内容的真实性,文章内容仅供参考,如果侵犯了原作者的权利请与网站管理员联系。
评论列表
-
暂无数据