解决Nginx location中配置proxy_pass转发时斜线‘/‘导致404问题

 更新时间:2024年05月15日 14:22:42   作者:空山苦水禅人  
这篇文章主要介绍了解决Nginx location中配置proxy_pass转发时斜线‘/‘导致404问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

nginx location配置proxy_pass转发时斜线‘/‘导致404

在Nginx location通用匹配规则中配置proxy_pass转发时

假设有如下location配置:

	location /test {
		proxy_pass http://localhost:8080/test;
		proxy_redirect off;
		proxy_set_header X-Real-IP          $remote_addr;
		proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
		proxy_set_header Host $host:$server_port;
		proxy_set_header X-Forwarded-Proto "https";
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Real-IP $remote_addr;
	}

如果我请求 http://localhost/test/a.jsp,则会将url根据匹配规则“/test”截取,然后将“/test”后面的内容(此处为“/a.jsp”)拼接到proxy_pass的后面,然后转发,也就是最后实际请求地址为:proxy_pass http://localhost:8080/test/a.jsp。

所以,如果location的匹配规则最后不加斜线'/',则proxy_pass的最后也不要加斜线,或者都加上斜线,不然就不能正确访问实际地址,导致404 not found错误。

注:正则匹配不适用,关于location的匹配规则,可以参考其他资料。

nginx反向代理中proxy_pass后面带\和不带\的坑

1. proxy_pass中带\和不带\的问题

(1)在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;

(2)如果没有/,则会把匹配的路径部分也给代理走。

2. 举例

下面四种情况分别用http://192.168.1.4/proxy/test.html 进行访问。

(1)

location /proxy/ {
     proxy_pass http://127.0.0.1:81/;
}

由于port后面有/ ,则不会代理匹配的路径,所以最终会被代理到: http://127.0.0.1:81/test.html

(2)

location /proxy/ {
     proxy_pass http://127.0.0.1:81;
}

由于port后面没有/ , 则会代理匹配的路径,所以最终会被代理到: http://127.0.0.1:81/proxy/test.html

(3)

location /proxy/ {
     proxy_pass http://127.0.0.1:81/ftlynx/;
}

由于port后面有/ ,则不会代理匹配的路径,所以最终会被代理到: http://127.0.0.1:81/ftlynx/test.html

(4)

location /proxy/ {
     proxy_pass http://127.0.0.1:81/ftlynx;
}

由于port后面有/ , 则不会代理匹配的路径,所以最终会被代理到: http://127.0.0.1:81/ftlynxtest.html

心得:

  • 从结果可以看出,应该说分为两种情况才正确。
  • 即http://127.0.0.1:81(上面的第二种)和 http://127.0.0.1:81/…(上面的第1,3,4种)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx配置文件详解

    Nginx配置文件详解

    这篇文章主要介绍了Nginx配置文件详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • nginx 负载均衡的简单配置方法

    nginx 负载均衡的简单配置方法

    Nginx 负载均衡的简单配置例子,供初学的朋友参考下
    2013-02-02
  • nginx虚拟主机配置实例详解

    nginx虚拟主机配置实例详解

    这篇文章主要介绍了nginx虚拟主机配置实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • Nginx服务状态监控的方法

    Nginx服务状态监控的方法

    这篇文章主要介绍了Nginx服务状态监控的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • nginx lua集成kafka的实现方法

    nginx lua集成kafka的实现方法

    这篇文章主要介绍了nginx lua集成kafka的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • nginx多https证书配置实现

    nginx多https证书配置实现

    本文主要介绍了nginx多https证书配置实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • Nginx启用GZIP压缩网页传输方法(推荐)

    Nginx启用GZIP压缩网页传输方法(推荐)

    Gzip压缩我很早已经就启用了,不过从未与大家分享过。今天小编给大家分享Nginx启用GZIP压缩网页传输方法,需要的朋友参考下吧
    2017-01-01
  • 关于nginx 实现jira反向代理的问题

    关于nginx 实现jira反向代理的问题

    这篇文章主要介绍了关于nginx 实现jira反向代理的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Nginx+Tomcat负载均衡集群安装配置案例详解

    Nginx+Tomcat负载均衡集群安装配置案例详解

    Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的相应,Nginx+Tomcat负载均衡集案列是应用于生产环境的一套可靠的Web站点解决方案,对Nginx Tomcat负载均衡集群相关知识感兴趣的朋友一起看看吧
    2021-10-10
  • 关于nginx报错405 not allowed解决方法总结

    关于nginx报错405 not allowed解决方法总结

    这篇文章主要给大家介绍了关于nginx报错405 not allowed解决方法的相关资料,nginx遇到post请求静态文件会得到405错误,文中通过代码介绍的非常详细,也给出了推荐方法,需要的朋友可以参考下
    2023-10-10

最新评论