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 即可

修改配置:

总结

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

相关文章

  • filebeat收集json格式的tomcat日志详解

    filebeat收集json格式的tomcat日志详解

    这篇文章主要为大家介绍了filebeat收集json格式的tomcat日志详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • nginx slice模块的使用和源码分析小结

    nginx slice模块的使用和源码分析小结

    很多请求都会去访问一个巨大的文件,这个时候slice模块就有了用武之地,本文主要介绍了nginx slice模块的使用和源码分析,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Nginx配置参数中文说明详解(负载均衡与反向代理)

    Nginx配置参数中文说明详解(负载均衡与反向代理)

    最近在看高性能Linux服务器构建实战的Nginx章节,对其nginx介绍的非常详细,现把经常用到的Nginx配置参数中文说明摘录和nginx做负载均衡的本人真实演示实例抄录下来以便以后查看
    2020-03-03
  • nginx ip黑名单动态封禁的例子

    nginx ip黑名单动态封禁的例子

    今天小编就为大家分享一篇nginx ip黑名单动态封禁的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • LNMP编译安装之nginx安装配置方法图文教程

    LNMP编译安装之nginx安装配置方法图文教程

    这篇文章主要为大家详细介绍了LNMP编译安装之nginx安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Nginx配置proxy_pass后返回404的问题及解决

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

    这篇文章主要介绍了Nginx配置proxy_pass后返回404的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Nginx防止流量攻击的配置详解

    Nginx防止流量攻击的配置详解

    这篇文章主要给大家分享了Nginx防止流量攻击的配置方法,文中给出了详细的介绍和配置示例代码,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • 配置nginx访问本地静态资源,本地图片,视频教程

    配置nginx访问本地静态资源,本地图片,视频教程

    文章介绍了如何配置Nginx以访问本地静态资源、图片和视频,首先,进入Nginx安装目录并打开`nginx.conf`文件,添加一个新的`server`配置来指定本地路径,然后,通过命令行重启Nginx服务以应用更改,最后,通过浏览器访问配置的图片路径来验证配置是否成功
    2025-01-01
  • 详解如何设置Nginx实现内外网端口映射

    详解如何设置Nginx实现内外网端口映射

    在 Nginx 中实现内外网端口映射是一种常见的做法,本文详细介绍如何设置 Nginx 实现内外网端口映射,有需要的小伙伴可以跟随小编一起学习一下
    2024-10-10
  • 一文搞懂Nginx限流(简单实现)

    一文搞懂Nginx限流(简单实现)

    这篇文章主要介绍了一文搞懂Nginx限流(简单实现),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05

最新评论