2013-01-24 57 views
26

的想法是把進入的請求http://abc.example.com/...,並將其改寫爲http://example.com/abc/...Nginx的轉換子域路徑組件,而不重定向

這是很容易與301/302重定向的事情:

# rewrite via 301 Moved Permanently 
server { 
    listen 80; 
    server_name abc.example.com; 
    rewrite^$scheme://example.com/abc$request_uri permanent; 
} 

訣竅當abc.example.comexample.com指向相同的Nginx實例時,將此URL更改爲透明到客戶端。

換句話說,可以Nginx的服務從example.com/abc/...內容時被請求abc.example.com/...沒有其他客戶端往返

與301完成任務的起點配置

Nginx的配置:

# abc.example.com 
server { 
    listen 80; 
    server_name abc.example.com; 
    rewrite^$scheme://example.com/abc$request_uri permanent; 
} 

# example.com 
server { 
    listen 80; 
    server_name example.com; 
    location/{ 
    # ... 
    } 
} 

回答

30
# abc.example.com 
server { 
    listen 80; 
    server_name abc.example.com; 
    location/{ 
    proxy_pass http://127.0.0.1/abc$request_uri; 
    proxy_set_header Host example.com; 
    } 
} 
+2

偉大工程具有Nginx的代理本身。將主機更改爲127.0.0.1,否則Nginx必須解析主機名(一個單獨的問題)。添加'$ request_uri',以便在代理請求中追加路徑。 –

+0

這很好用。注意靜態資產可能會有404. –

+1

@KJPrince 404資產有什麼問題? –

相關問題