Cisco 路由器背后的 Apache 虚拟主机

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 服务器时没有保留域名一样。

我做错了什么吗?我该如何检查发生了什么?应该进行哪些设置才能使其从外部工作?

答案1

尝试打开 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>

相关内容