在Cisco路由器后面的Apache虚拟主机

我正在build立一个Apache 2.2 Ubuntu Web服务器,用于内部服务,也应该从我们的局域网外访问。 我们的LAN有一个外部IP,它是我们的RV042 Cisco路由器的外部IP。

我们在外部DNS服务器上build立了几条指向这个IP的logging。

我们的内部DNS服务器将相同的loggingparsing到我们networking服务器的内部IP,因此来自networking内部的计算机可以使用相同的地址访问它们,就好像它们在外面一样。

我们将路由器的外部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> 

现在,如果我们在我们的局域网,这个工作。

但是,如果我们在局域网之外,则可以访问我们的Web服务器的默认页面:

 It Works! This is the default web page for this server. 

但是我们无法到达虚拟主机,就好像在路由器将数据包转发到Web服务器时域名不被保留一样。

难道我做错了什么? 我如何检查发生了什么? 应该从外部做这项工作的设置是什么?

尝试启用ProxyPreserveHost并用*replace端口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>