Nginx对url添加斜杠并301跳转

xiaohai 2019-06-20 19:07:41 1827人围观 标签: Nginx 
简介通过Nginx访问不带斜线的路径的时候,Nginx会出现301跳转,并且在这个过程中会出现一些其他问题。本文主要记录下在这过程中遇到的问题,以便后续查看。

  最近遇到了一个Nginx重定向的问题。场景是这样的,首先是通过阿里云ECS服务器搭建了一个端口为8080的Nginx服务器,提供一个静态网页网页的访问。并且又通过阿里云的负载均衡指向了该端口,那么在通过域名访问的时候,如果请求地址为:http://www.xxx.com/abc的时候,会自动跳转到http://www.xxx.com:8080/abc/这样的路径下。那么这是为什么呢?

经过查阅相关文章才知道,这里主要还是Nginx的问题。

  当我们访问http://www.xxx.com/abc路径的时候,Nginx首先会去root目录下查找abc这样的文件,如果没有查询到abc这样的文件,那么Nginx就会自动在后面添加一个斜线,如:http://www.xxx.com/abc/,但是Nginx在进行301的跳转的时候,它会带上响应的端口号,所以就会出现:http://www.xxx.com:8080/abc/这样的路径。

如何解决上面的问题呢?
1、设置 port_in_redirect 指令

当配置为on,即开启状态,重定向时会将当前nginx监听端口号带入,关闭即可,配置为off,相似的还有server_name_in_redirect配置。

port_in_redirect off;
2、在链接结尾加上/