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

修改配置:

总结

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

相关文章

  • Dockerfile打包nginx镜像的实现步骤

    Dockerfile打包nginx镜像的实现步骤

    本文主要介绍了Dockerfile打包nginx镜像的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • 一次nginx 504 Gateway Time-out错误排查、解决记录

    一次nginx 504 Gateway Time-out错误排查、解决记录

    这篇文章主要介绍了一次nginx 504 Gateway Time-out错误排查、解决记录,经过反复检查,发现造成这个问题的原因就是PHP的CURL没有设置超时时间,解决办法只要设置超时时间或者修改一下nginx的配置即可解决,需要的朋友可以参考下
    2014-05-05
  • nginx中共享内存的使用详解

    nginx中共享内存的使用详解

    这篇文章主要介绍了nginx中共享内存的使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Nginx流量拷贝ngx_http_mirror_module模块使用方法详解

    Nginx流量拷贝ngx_http_mirror_module模块使用方法详解

    这篇文章主要介绍了Nginx流量拷贝,Nginx专门提供了ngx_http_mirror_module模块,用来实现流量拷贝。将生产环境的流量拷贝到预上线环境或测试环境
    2022-04-04
  • Nginx+FastDFS搭建图片服务器的方法实现

    Nginx+FastDFS搭建图片服务器的方法实现

    这篇文章主要介绍了Nginx+FastDFS搭建图片服务器的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 利用nginx搭建RTMP视频点播、直播、HLS服务器

    利用nginx搭建RTMP视频点播、直播、HLS服务器

    本文主要介绍了利用nginx搭建RTMP视频点播、直播、HLS服务器,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • nginx中的proxy_redirect的使用案例详解

    nginx中的proxy_redirect的使用案例详解

    proxy_redirect 该指令用来修改被代理服务器返回的响应头中的Location头域和“refresh”头域,这篇文章主要介绍了nginx中的proxy_redirect的使用案例详解,需要的朋友可以参考下
    2024-06-06
  • Nginx列出目录和文件并用密码控制访问权限配置方法

    Nginx列出目录和文件并用密码控制访问权限配置方法

    这篇文章主要介绍了Nginx列出目录和文件并用密码控制访问权限配置方法,本文给出了详细的安装配置步骤,需要的朋友可以参考下
    2015-07-07
  • Nginx中split_clients模块的使用

    Nginx中split_clients模块的使用

    split_clients模块可以轻松地实现A/B测试,本文主要介绍了Nginx中split_clients模块的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • Nginx http运行状况健康检查配置过程解析

    Nginx http运行状况健康检查配置过程解析

    这篇文章主要介绍了Nginx http运行状况健康检查配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论