2016-02-29 19 views
1

我遇到了這樣一種情況:我工作的公司希望將其Web服務器分佈在虛擬機上,而不是依靠一個物理盒來完成所有任務。我們目前的設置是這樣的:在單一靜態IP背後的不同機器上的多個網絡服務器

example.com → static IP → internal firewall (only 1 machine may receive port 80 traffic) → 192.168.1.100 (our production box) 

example1.com, example2.com, etc... → same as above 

我們的生產箱運行的Apache和把輸入名稱,以適當使用VirtutalHost本地文件夾。這可以按預期工作,但爲了性能和安全方面的考慮,我們希望將一些主機移出生產環境。類似下面的設置:

*.example.com → static IP → firewall → 192.168.1.100 (Production) 
jira.example.com -> static IP -> firewall -> 192.168.1.100 -> 192.168.1.120 
*.example1.com → static IP → firewall → 192.168.1.100 → 192.168.1.111 (Wordpress-1) 
*.example2.com → static IP → firewall → 192.168.1.100 → 192.168.1.112 (Wordpress-2) 
etc….. 

我們試圖類似於192.168.1.100上的虛擬主機文件下面的內容:

<VirtualHost *:*> 
    ServerName example.com 
     ... 
</VirtualHost> 

<VirtualHost jira.example.com:*> 
    ServerName jira.example.com 
     ... 
    ProxyPass  /http://192.168.1.120:80/ 
    ProxyPassReverse/http://192.168.1.120:80/ 
</VirtualHost> 

<VirtualHost example1.com:*> 
    ServerName example1.com 
     ... 
    ProxyPass  /http://192.168.1.111:80/ 
    ProxyPassReverse/http://192.168.1.111:80/ 
</VirtualHost> 

<VirtualHost example2.com:*> 
    ServerName example2.com 
     ... 
    ProxyPass  /http://192.168.1.112:80/ 
    ProxyPassReverse/http://192.168.1.112:80/ 
</VirtualHost> 

這部分工作 - 我能使用example1.com交談到Wordpress-1。但是,重定向會導致超鏈接指向example.com,從而導致網站中斷。

當我正在研究DNS時,它似乎可能是一個更好的選擇。是否有可能讓域名提供商(在這種情況下,GoDaddy)指向防火牆後面的DNS服務器,然後適當地引導流量?事情是這樣的:

hostname → static IP → firewall → 192.168.1.100 (DNS) → webserver assigned to hostname 

example.com: 
NS ns1.example.com. 
ns1.example.com. A 192.168.1.100 
www A 192.168.1.100 
jira.example.com. A 192.168.1.120 

example1.com: 
NS ns1.example1.com. 
ns1.example1.com. A 192.168.1.100 
www A 192.168.1.111 

example2.com: 
NS ns1.example2.com. 
ns1.example2.com. A 192.168.1.100 
www A 192.168.1.112 
+0

這讓我感到非常複雜! (因此容易出錯)是否有一個原因,你不能只是把NGINX盒子放在前面,讓它把所有需要的東西放在哪裏? –

+0

@MichaelB - Nginx看起來很有前景,但它似乎與Apache的虛擬主機做類似的代理。你是否用nginx來表示這樣的事情? 'server { server_name example1.com; listen 80; listen 8080; location/{ proxy_pass $ scheme://192.168.1.111:$ server_port $ uri; proxy_set_header主機$主機; } }' – Jordan

回答

相關問題