2015开篇——配置nginx URL有感

人老是习惯在懒散中拥抱自我。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,问题解决。

相关文章
相关标签/搜索