你的分享就是我们的动力 ---﹥

2015开篇——配置nginx URL有感

时间:2015-03-16 17:17来源:www.chengxuyuans.com 点击:

人总是习惯在懒散中拥抱自我。

每次遇到坑了,就巴望着留下点什么来记录一下,以前总是通过给代码增加注释来备忘。当然,博客是最好的记忆工具,没有之一。


这两天公司产品频繁新上线一些周边,需要通过配置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,问题解决。


转载注明地址:http://www.chengxuyuans.com/system-maintenance/91722.html

推荐文章