Linux

Cisco 路由器後面的 Apache 虛擬主機

  • December 8, 2012

我正在為內部服務設置一個 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>

引用自:https://serverfault.com/questions/456169