2013-01-10 140 views
7

有關於nginx子域配置的SO有幾個問題,但沒有找到與我的完全相同的問題。虛擬主機上的nginx子域配置

假設我從我們組織的高級網絡管理員example.com獲得虛擬主機some.example.com。我想使用some.example.com作爲我的主站點,並使用foo.some.example.combar.some.example.com作爲輔助使用(代理等)。我想這個簡單的配置,並把它sites-enabled下,但沒有奏效:

server { 
    listen 80; 
    server_name some.example.com; 
    root /home/me/public_html/some; 
    index index.html index.htm; 
} 

server { 
    listen 80; 
    server_name foo.some.example.com; 
    root /home/me/public_html/foo; 
    index index.html index.htm; 
} 

server { 
    listen 80; 
    server_name bar.some.example.com; 
    root /home/me/public_html/bar; 
    index index.html index.htm; 
} 

在這種背景下some.example.com工作正常,但其他兩個瀏覽器的回報could not find foo.some.example.com。我在一臺Ubuntu服務器上運行它。

這個配置有什麼問題嗎?或者是我應該向更高級別的網絡管理員(使foo.some.example.combar.some.example.com註冊)?

回答

11

子域配置從父域的DNS服務器中的條目開始,並且查找將子域解析爲Web服務器的IP地址。 Web服務器依次根據其子域的配置來委託請求。

如果您的子域中沒有DNS設置,那麼example.com上的管理員需要設置一個CNAME別名。該別名將子域指向同一個Web服務器,該服務器託管父域的網站。規範名稱(CNAMES)爲每個子域添加。一旦子域被解析爲Web服務器的IP地址,Web服務器就可以將請求路由到不同的網站。

+0

感謝您的回覆。所以我有兩個選擇:1)在我自己的'some.example.com'建立一個DNS 2)在'example.com'問管理員爲兩個子域添加'CNAME's?如果我使用後者,每次我想添加一個子域時,我都必須在'example.com'上詢問管理員? – clwen

+1

是的 - 這是正確的。代替單獨的DNS,所有DNS請求都將轉到example.com上的DNS服務器。 –

+0

如果我選擇自己設置DNS服務器,我可以將示例中的所有三個域指向同一個IP,並讓nginx找出要使用哪個「服務器」(父級或foo或bar)? – clwen

0

CNAME只是一種獲取網絡流量到您的IP地址的方式。 請求仍然會在Host:標頭中包含原始名稱。