人总是习惯在懒散中拥抱自我。
每次遇到坑了,就巴望着留下点什么来记录一下,以前总是通过给代码增加注释来备忘。当然,博客是最好的记忆工具,没有之一。
这两天公司产品频繁新上线一些周边,需要通过配置URL来实现跳转到不同的周边页面。当然前置机还是Nginx,我喜欢它。
场景如下:
公网80端口通过NAT映射到内网某台机器的81端口,目前需要增加一个url(已使用这个url做好二维码已发放至外部),url为:http://www.domain.cn/web/test(结尾没有斜杠)。Nginx配置如下:
location /web/test/ { alias /www/download/app/; index index.html; }
结果:
通过http://www.domain.cn/web/test/ 访问正常,跳转到预期的index.html页面
通过http://www.domain.cn/web/test 访问不正常,通过console,发现访问该url时,301至http://www.domain.cn:81/web/test,结果不出意外的是404。
开始以为是原业务系统已占用该URL,是否冲突导致。马上自己把自己否决了这个想法。
下载windows版本的Nginx,测试之,一切正常。思路转移到到这个81端口。为什么会跳转到81端口呢?
百思不得其解,曲线解决这个问题,从“/”的问题开始下手,为什么加斜杠就OK,不加斜杠就跳转到81端口。想通过Rewrite解决这个问题,增加配置如下:
location /web/test/ { if (-d $request_filename) { rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent; } alias /www/web/test/; index index.html; }
问题照旧。
可否禁止Nginx默认的301呢?Google得到该结果:
port_in_redirect off;// 没找到如何禁止301,但找到了在301时不带端口进行301
reload,问题解决。
时间: 2024-10-11 01:23:19