Web-Server

轉發(別名?重定向?路由?)子域到 Nginx 配置中的目錄

  • December 10, 2010

我想別名m.example.com,以便請求被轉發/別名,example.com/m/但沒有使用者被重定向到/m/目錄。

例如,使用者訪問m.example.com, m.example.com/1.htmm.example.com/2.htm但 nginx 將請求轉發/別名到example.com/m/,example.com/m/1.htmexample.com/m/2.htm

我嘗試使用該rewrite指令,但這似乎執行客戶端重定向到example.com/m/.

我還查看了該alias指令,但這似乎只是修改了文件將在伺服器文件系統上提供的位置。

我確信這一定是以前做過的,但我似乎無法解決這個問題。我是否在alias指令中使用了不正確的標誌(我已經嘗試了所有 4: last, break, redirect, permanent)。我是否錯過了完全使用的正確指令?

使用重寫的配置片段:

server_name       example.com m.example.com;

if ($host ~* m\.(.*))
{
   rewrite ^(.*)$ http://example.com/m$1 break;
}

另一種嘗試:

server
{
   listen            80;
   server_name       m.example.com;

   location /
   {
       rewrite ^ http://example.com/m$request_uri permanent;
   }
}

提前致謝。

這在 Nginx 中是不可能的。您可以使用 m 子域,但您必須在該伺服器塊中傳遞給您的後端。這是因為 Nginx 無法在不使用實際 HTTP 重定向的情況下重寫 URL,即使您告訴它它也會忽略它並強制進行 HTTP 重定向。

但是,如果您使用 fastcgi 後端,這並不重要,即使您將代理傳遞給 Apache,您仍然應該能夠將其配置為不關心。

引用自:https://serverfault.com/questions/211175