nginx反向代理如何支持网址自动添加斜线

 更新时间:2024年05月14日 15:28:20   作者:爱忽悠的唐唐  
这篇文章主要介绍了nginx反向代理如何支持网址自动添加斜线问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、背景

我们在访问nginx代理下的项目前端页面时

当请求URL后面没有 / 

nginx目录中如果没有对应的文件

就会自动进行 301 并加上 / 

二、问题

通过lua+nginx进行proxy_pass+upstream负载后,带二级目录的页面访问路径出错,无法解析。

例如访问 https://xxx.com.cn/admin (未带/ ) 时会跳转至 http://safes-normal:8092/admin/ ,301后的地址出错。

原有配置如下:

三、解决方案

第一步:解决重定向域名问题

在location处添加

proxy_set_header Host h o s t : host: host:proxy_port;
proxy_set_header X-Forwarded-For $remote_addr;

例如

原因:

当URL 指向一个目录并且在最后没有包含“/”时,Nginx 内部会自动的做一个 301 重定向,由于我们的nginx中的server_name_in_redirect 值为 off ,故URL 重定向为: 原 URL 中的域名 + 目录名 + /。

而我们没设置proxy_set_header Host 时,浏览器直接访问 nginx,获取到的 Host 是 proxy_pass 后面的值,即 safes-normal。

故浏览器跳转成了 http://safes-normal:8092/admin/。

当我们设置了proxy_set_header Host h o s t : host: host:proxy_port后,再访问 https://xxx.com.cn/admin ,此时会发现浏览器会301至https://xxx.com.cn:8092/admin/,这样也会导致访问失败,因为我们希望得到的结果是:

https://xxx.com.cn/admin 重定向为 https://xxx.com.cn/admin/

第二步:解决重定向后的端口问题

查阅资料发现nginx中有 port_in_redirect 配置

如果port_in_redirect为off 时,那么始终按照默认的端口;如果该指令打开,那么将会返回当前正在监听的端口。

由于port_in_redirect默认为on,所以导致我们重定向的时候,带了server中的端口8092,如果希望nginx在301重定向时不带端口,设置port_in_redirect为off 即可

修改配置:

总结

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

相关文章

  • Nginx1.8.0版本平滑升级新版本1.9.7

    Nginx1.8.0版本平滑升级新版本1.9.7

    这篇文章主要介绍了Nginx1.8.0版本平滑升级新版本1.9.7的相关资料,需要的朋友可以参考下
    2016-02-02
  • LNMP 解决Access Denied错误详细介绍

    LNMP 解决Access Denied错误详细介绍

    这篇文章主要介绍了LNMP 解决Access Denied错误详细介绍的相关资料,需要的朋友可以参考下
    2016-10-10
  • Nginx ssi合并页面的具体实现

    Nginx ssi合并页面的具体实现

    nginx的ssi模块是一种类似于ASP的基于服务器的网页制作技术,本文主要介绍了Nginx ssi合并页面的具体实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • nginx共享内存机制详解

    nginx共享内存机制详解

    这篇文章主要介绍了nginx共享内存机制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Nginx服务器下配置个性二级域名及多个域名的实例讲解

    Nginx服务器下配置个性二级域名及多个域名的实例讲解

    这篇文章主要介绍了Nginx服务器下配置个性二级域名及多个域名的实例讲解,注意一下rewrite的写法规则,需要的朋友可以参考下
    2016-01-01
  • Nginx 介绍及日常管理的详解

    Nginx 介绍及日常管理的详解

    这篇文章主要介绍了Nginx 介绍及日常管理的详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • nginx对http请求处理的各个阶段详析

    nginx对http请求处理的各个阶段详析

    这篇文章主要给大家介绍了关于nginx对http请求处理的各个阶段分析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • nginx.conf配置两个前端路径

    nginx.conf配置两个前端路径

    本文主要介绍了nginx.conf配置两个前端路径,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 分享最新版 nginx内置变量 大全

    分享最新版 nginx内置变量 大全

    在配置基于nginx服务器的网站时,必然会用到 nginx内置变量 ,下面笔者将它整理成列表,把最新版本的变量列出来,以方便做配置时查询
    2016-04-04
  • 解决Nginx 配置 proxy_pass 后 返回404问题

    解决Nginx 配置 proxy_pass 后 返回404问题

    这篇文章主要介绍了Nginx 配置 proxy_pass 后 返回404问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论