Nginx自导补全斜杠“/”而导致重定向时丢失端口

时间:2024-05-21 15:52:13

Nginx自导补全斜杠“/”而导致重定向时丢失端口

今天部署完成系统后,发现退出系统的时候每次都会自动重定向一次,并且重定向后导致访问地址中端口丢失,最终导致访问系统出错,无法访问。
Nginx自导补全斜杠“/”而导致重定向时丢失端口
从图中可以看出,首先系统访问了系统根路径,然后就重定向了。需要注意的这个路径没有带上斜杠“/”,然后Nginx返回301,并且Location的地址中并没有端口号,而在最后补充了一个斜杠“/”

通过查阅相关资料后了解到:nginx在接受到一个请求路径后,比如:“http://xxxx:222/abc”,首先会从根路径中查找是否存在abc这个文件,如果abc文件不存在,则将abc当做一个目录进行处理,就会自动在后面加上斜杠“/”,并返回301。

而我们的系统首先是内部通过Nginx当做静态资源服务器,并且监听了80端口,而在Nginx外层还有一个端口转发,但这个端口转发使用的并不是80,所以这里就导致了Nginx在自动补全末尾斜杠“/”的时候,因为Nginx自生监听的是80,所以重定向地址并没有加上端口,这也就导致每一次退出的时候因为末尾没有斜杠,总是会丢失端口发生。