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,問題解決。

相關文章
相關標籤/搜索