nginx配置proxy_pass转发路径问题解决方法

发布时间:2020-11-16编辑:脚本学堂
有关nginx配置proxy_pass时,遇到的转发路径问题,有关相对路径与绝对路径对转发的影响,需要的朋友参考下。

nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;
如果没有/,则会把匹配的路径部分也给代理走。
 

复制代码 代码示例:
location ^~ /static_js/
{
proxy_cache js_cache;
proxy_set_header Host js.test.com;
proxy_pass http://js.test.com/;
}

按照以上配置,如果请求的url是http://servername/static_js/test.html
会被代理成http://js.test.com/test.html

如果按如下配置:
 

复制代码 代码示例:
location ^~ /static_js/
{
proxy_cache js_cache;
proxy_set_header Host js.test.com;
proxy_pass http://js.test.com;
}
 

则会被代理到http://js.test.com/static_js/test.htm

也可以用rewrite实现/的功能,例如:
 

复制代码 代码示例:
location ^~ /static_js/
{
proxy_cache js_cache;
proxy_set_header Host js.test.com;
rewrite /static_js/(.+)$ /$1 break;
proxy_pass http://js.test.com;
}