Nginx之proxy_pass指令url反斜杠作用
随风飘扬 学习 2021年04月22日10:43 1338
在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; }
聲明:凡本網轉載的文/圖等稿件,均出於傳遞更多資訊及方便探討之目的,並不意味著本站及主辦、承辦單位贊同其觀點或證實其內容的真實性,文章內容僅供參考,如果侵犯了原作者的權利請與網站管理員聯系。
評論清單
-
暫無數據