2016-10-12 68 views
1

我有一個包羅萬象的服務塊這樣的:Nginx的:僅使用服務器模塊,如果位置匹配

server { 
    listen  80 default_server; 
    server_name _; 

    location /blog{ 
     # pass request to ghost 
    } 
    location /{ 
     # pass request to custom node app 
    } 
} 

它傳遞到自定義節點的應用程序,從而驗證請求的域,協議和路徑,問題如果需要,單個301重定向;我們這樣做是爲了儘量減少301重定向,以實現SEO目的。

我還需要我的幽靈博客才能在https://www.exmaple.com/blog服務。我添加了以下代碼塊:

server { 
    listen  80; 
    server_name example.com; 

    location /blog { 
     return 301 https://www.example.com$request_uri; 
    } 
} 

這樣對裸域的請求就會被重定向。但是現在對example.com的請求返回默認的Nginx index.html頁面。我如何防止這種情況發生?我想避免使用if

+1

那麼,你要重定向有兩種不同的/博客的位置?爲什麼不將捕獲所有位置添加到您的example.com服務器塊? –

+0

我仍然需要裸域上的所有非博客請求才能訪問我的自定義節點應用程序。問題是第二個服務器塊阻止了這種情況的發生。 –

回答

2

你需要有一個包羅萬象的裸域服務器塊路由到節點應用

server { 
    listen  80; 
    server_name example.com; 

    location /blog { 
     return 301 https://www.example.com$request_uri; 
    } 

    location /{ 
     # pass request to custom node app 
    } 
} 
+0

那麼只需複製整個'位置/'塊? –

+0

是的,問題是裸域只規定如果位置是/博客該怎麼做。所以設置這個catchall應該讓你工作。 – miah