解决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反向代理进行yum配置的步骤详解

    nginx反向代理进行yum配置的步骤详解

    这篇文章主要给大家介绍了关于nginx反向代理进行yum配置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Nginx网站服务过程详解

    Nginx网站服务过程详解

    Nginx是一款高性能、异步非阻塞工作模式、轻量级Web服务软件,这篇文章主要介绍了Nginx网站服务的相关知识,需要的朋友可以参考下
    2023-06-06
  • Nginx反向代理后台报404遇到的解决方法

    Nginx反向代理后台报404遇到的解决方法

    Nginx反向代理404错误通常是由服务器配置不正确、文件路径不正确、文件权限不正确、文件名大小写不正确等,本文主要介绍了Nginx反向代理后台报404遇到的解决方法,感兴趣的可以了解一下
    2023-11-11
  • nginx中封禁ip和允许内网ip访问的实现示例

    nginx中封禁ip和允许内网ip访问的实现示例

    Nginx不仅仅只是一款反向代理和负载均衡服务器,本文主要介绍了nginx中封禁ip和允许内网ip访问的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    2022-03-03
  • centos8安装nginx1.9.1的详细过程

    centos8安装nginx1.9.1的详细过程

    这篇文章主要介绍了centos8安装nginx1.9.1的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • nginx配置多个前端项目实现步骤

    nginx配置多个前端项目实现步骤

    本文主要介绍了nginx配置多个前端项目实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 详解linux中 Nginx 常见502错误问题解决办法

    详解linux中 Nginx 常见502错误问题解决办法

    这篇文章主要介绍了详解linux中 Nginx 常见502错误问题解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Nginx rewrite正则匹配重写的方法示例

    Nginx rewrite正则匹配重写的方法示例

    这篇文章主要介绍了Nginx rewrite正则匹配重写的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • nginx禁止直接通过ip进行访问并跳转到自定义500页面的操作

    nginx禁止直接通过ip进行访问并跳转到自定义500页面的操作

    这篇文章主要介绍了nginx禁止直接通过ip进行访问并跳转到自定义500页面的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 通过Nginx代理转发配置实现跨域的方法(API代理转发)

    通过Nginx代理转发配置实现跨域的方法(API代理转发)

    这篇文章主要给大家介绍了关于如何通过Nginx代理转发配置实现跨域(API代理转发)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11

最新评论