Linux
Cisco 路由器後面的 Apache 虛擬主機
我正在為內部服務設置一個 Apache 2.2 Ubuntu Web 伺服器,該伺服器也應該可以從我們的 LAN 外部訪問。我們的 LAN 有一個外部 IP,即 RV042 Cisco 路由器的外部 IP。
我們在我們的外部 DNS 伺服器上設置了幾個指向該 IP 的 A 記錄。
我們的內部 DNS 伺服器將相同的記錄解析為我們 Web 伺服器的內部 IP,因此網路內部的電腦可以使用與外部相同的地址訪問它們。
我們將路由器的外部 80 埠轉發到我們的 Web 伺服器的 80 埠。
我已經為列表中的每個域名設置了一個虛擬主機,我的 httpd.conf 是這樣的:
ServerName web.domain.com NameVirtualHost *:80 <VirtualHost *:80> ServerName alfresco.domain.com <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /alfresco http://localhost:8080/alfresco ProxyPassReverse /alfresco http://localhost:8080/alfresco ProxyPass /share http://localhost:8080/share ProxyPassReverse /share http://localhost:8080/share </VirtualHost> <VirtualHost *:80> ServerName crm.domain.com DocumentRoot /var/www/sugarcrm </VirtualHost>
現在,如果我們在我們的區域網路中,這可以工作。
但是,如果我們在 LAN 之外,我們會到達 Web 伺服器的預設頁面:
It Works! This is the default web page for this server.
但是我們無法訪問虛擬主機,就好像在路由器將數據包轉發到 Web 伺服器時沒有保留域名一樣。
難道我做錯了什麼?我怎樣才能檢查發生了什麼?從外部進行這項工作的設置應該是什麼?
嘗試打開 ProxyPreserveHost 並將埠 80 替換為 *.
像這樣的東西:
<VirtualHost *:*> ServerName alfresco.domain.com <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPreserveHost On ProxyPass /alfresco http://localhost:8080/alfresco ProxyPassReverse /alfresco http://localhost:8080/alfresco ProxyPass /share http://localhost:8080/share ProxyPassReverse /share http://localhost:8080/share </VirtualHost>