解决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反向代理导致session失效的问题解决

    nginx反向代理导致session失效的问题解决

    这篇文章主要介绍了nginx反向代理导致session失效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • NGINX阻止指定ip的请求问题及解决方案

    NGINX阻止指定ip的请求问题及解决方案

    web页面做了一个功能,在websocket请求失败的情况,会定时向服务端进行重试进行建立连接,这篇文章给大家介绍NGINX阻止指定ip的请求问题及解决方案,感兴趣的朋友一起看看吧
    2024-02-02
  • nginx缓存及错误页面配置

    nginx缓存及错误页面配置

    这篇文章主要介绍了nginx缓存及错误页面配置的相关资料,需要的朋友可以参考下
    2017-01-01
  • Nginx服务500:Internal Server Error原因之一

    Nginx服务500:Internal Server Error原因之一

    这篇文章主要介绍了Nginx服务500:Internal Server Error原因之一,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 详解nginx中的日志配置

    详解nginx中的日志配置

    日志对于统计排错来说非常有利的,本文为大家总结了nginx日志相关的配置如access_log、log_format、open_log_file_cache等内容,感兴趣的小伙伴可以了解下
    2023-08-08
  • Linux Nginx下SSL证书安装方法及WordPress CDN配置

    Linux Nginx下SSL证书安装方法及WordPress CDN配置

    这篇文章主要介绍了Linux Nginx下SSL证书安装方法及WordPress CDN配置,需要的朋友可以参考下
    2017-08-08
  • Nginx 配置 WebSocket 代理的操作过程

    Nginx 配置 WebSocket 代理的操作过程

    这篇文章主要介绍了Nginx 配置 WebSocket 代理的操作过程,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • 提升Nginx性能的一些建议

    提升Nginx性能的一些建议

    这篇文章主要介绍了提升Nginx性能的一些建议,帮助大家更好的使用nginx,感兴趣的朋友可以了解下
    2020-09-09
  • 分享一份nginx重启脚本

    分享一份nginx重启脚本

    nginx是超级稳定的服务器,一般不会因为超载问题而需要重启,重启的目的一般都是修改配置文件后需要加载一下
    2012-09-09
  • Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)

    Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)

    为什么需要搭建Nginx集群?为了防止Nginx单点故障造成服务器瘫痪,本文介绍了Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx),感兴趣的可以了解一下
    2021-05-05

最新评论