2013-12-09 64 views
1

我的服務器中的每個域都有多個域名和多個Django應用程序。我將所有域名都指向了我的服務器的IP。我想爲每個域運行Django服務器並使用Nginx映射這些服務器和域名。如何使用同一端口監聽多個域名?

問題是,當我想在我的Django設置文件中將example.com:80綁定爲主機:端口對設置時,如果有一個實例在127.0.0.1:80上運行,它將無法綁定該地址。因此,我必須爲每個域使用不同的端口,並在Nginx中映射example.com:80至127.0.0.1:XXXX。

我想自動化這個過程,但由於我必須爲每個域使用不同的端口,所以當我託管新站點時,我必須找到空閒端口。有沒有辦法將服務器直接綁定到domain.com:80並將domain.com映射到內部Django服務器,該服務器使用Nginx爲每個域偵聽domain.com:80?

+0

你可以用一個簡單的nginx處理你的所有域。 在uwsgi或gunicorn中運行您的django應用程序,並配置nginx以提供靜態內容。 我不確定你真的想完成什麼?你想要一個Django部署工具嗎? 我已經明白你想要在生產環境中運行內置的Django服務器嗎?我不喜歡這個主意。 – kelvan

+0

@ kelvan其實我使用nginx&gunicorn&django,但是我沒有在這個問題中提到gunicorn,因爲我認爲它沒有任何區別。我想要做的是在服務器中運行多個Django應用程序,並將nginx配置爲將代理域配置爲django服務器。問題是我想讓這個過程自動化,我不知道應該用gunicorn綁定哪個地址。如果我綁定的IP地址是127.0.0.1,那麼當我想要託管一個新網站時,我必須找到一個空閒端口,但對我來說這似乎不是個好主意。 – osman

回答

0

如果您在一臺服務器上,則可以使用不同的unix套接字而不是地址。這樣,您可以控制自動化工具中生成的名稱,而不依賴於可用的端口。 如果你使用多個服務器,那麼我不相信有更多的選擇,比使用一個端口池,並連接到這個池中的下一個可用的選項

+0

我不知道unix套接字可以這樣使用。感謝您的建議! – osman