人老是习惯在懒散中拥抱自我。html
每次遇到坑了,就巴望着留下点什么来记录一下,之前老是经过给代码增长注释来备忘。固然,博客是最好的记忆工具,没有之一。web
这两天公司产品频繁新上线一些周边,须要经过配置URL来实现跳转到不一样的周边页面。固然前置机仍是Nginx,我喜欢它。shell
场景以下:windows
公网80端口经过NAT映射到内网某台机器的81端口,目前须要增长一个url(已使用这个url作好二维码已发放至外部),url为:http://www.domain.cn/web/test(结尾没有斜杠)。Nginx配置以下:app
location /web/test/ { alias /www/download/app/; index index.html; }
结果:dom
经过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,是否冲突致使。立刻本身把本身否决了这个想法。url
下载windows版本的Nginx,测试之,一切正常。思路转移到到这个81端口。为何会跳转到81端口呢?spa
百思不得其解,曲线解决这个问题,从“/”的问题开始下手,为何加斜杠就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,问题解决。