Nginx之proxy_pass指令url反斜杠作用
随风飘扬 学习 2021年04月22日10:43 2480
在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; }
Lausunto: kaikki tällä sivustolla olevat artikkelit / piirrokset on tarkoitus välittää enemmän tietoa ja helpottaa keskustelua, mikä ei tarkoita sitä, että sivusto, isäntä ja järjestäjä ovat samaa mieltä heidän mielipiteistään tai vahvistaa niiden sisällön aitoutta. Artikkelien sisältö on tarkoitettu ainoastaan viitteeksi. Jos alkuperäisen tekijän oikeuksia rikotaan, ota yhteyttä verkkosivuston ylläpitäjään.
Kommenttien luettelo
-
Ei tietoja