当前位置: 代码网 > 服务器>服务器>Nginx > nginx配置proxy_pass代理转发时报404问题

nginx配置proxy_pass代理转发时报404问题

2024年05月19日 Nginx 我要评论
nginx配置proxy_pass代理转发时报404加 / 与不加 /在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径例如:加 /server_na

nginx配置proxy_pass代理转发时报404

加 / 与不加 /

在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径

例如:

  • 加 /
server_name xxx.com
location /data/ {
    proxy_pass http://127.0.0.1/;
}

访问 http://xxx.com/data/index.xml 会转发到 http://127.0.0.1/index.html

  • 不加 /
server_name xxx.com
location /data/ {
    proxy_pass http://127.0.0.1;
}

访问 http://xxx.com/data/index.xml  会转发到 http://127.0.0.1/data/index.html

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;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com