我有三個非常相似的靜態網站版本,我想在相同的虛擬機上同一個nginx實例託管(最好)。DNS魔術可以從nginx託管多個版本的同一網站?
比方說,我的網站的內容佈局,像這樣:
/opt/mysite/
flavor1/
index.html
...all content for first flavor/version of the site
flavor2/
index.html
...all content for second flavor/version of the site
flavor3/
index.html
...all content for third flavor/version of the site
等,現在讓我們假設VM具有的9000.1.2.3
一個公網IP(我知道這是我只是用這種不合法的IPv4一個例子)。當我nginx的配置,像這樣:
http {
server {
listen 8080;
server_name localhost;
location/{
root /opt/mysite
index index.html index.htm;
}
}
}
...然後啓動nginx的,我可以去9000.1.2.3:8080
並查看默認的nginx的歡迎屏幕。到現在爲止還挺好。
現在讓我們假裝我已經購買了三個域名:example.com
,example.net
和example.info
。我真正想要的是這樣的:
| Domain Name | Maps to | Which then serves |
|--------------|:---------------:|:---------------------:|
| example.com | 9000.1.2.3:8080 | /opt/mysite/flavor1/* |
| example.net | 9000.1.2.3:9200 | /opt/mysite/flavor2/* |
| example.info | 9000.1.2.3:9300 | /opt/mysite/flavor3/* |
意義,如果我去,說,http://example.com/fizz
,那麼最終9000.1.2.3/opt/mysite/flavor1/fizz
是被返回了什麼。但是如果我要求http://example.info/fizz
,那麼9000.1.2.3/opt/mysite/flavor3/fizz
最終會返回。
我個人不在乎需要做什麼魔術來完成這個:或許DNS配置,nginx調優,IP轉發等等。所以我不關心我上面表格中的中間列( 「地圖到」一欄)。我只需要一種方法來調用這三個域,以便通過運行在單個虛擬機上的相同nginx實例來提供/支持,但爲我提供不同版本的站點。有任何想法嗎?
也許你可以使用更復雜的服務器來提供文件服務和服務器可以選擇什麼味道來使用基於主機名? – matanso
感謝@matanso(+1)但是如果可能的話,我真的很想將它保存到nginx。 – smeeb