Назад | Перейти на главную страницу

Виртуальные хосты Apache за маршрутизатором Cisco

Я настраиваю веб-сервер Apache 2.2 Ubuntu для внутренних служб, к которым также предполагается доступ извне нашей локальной сети. Наша локальная сеть имеет единственный внешний IP-адрес, который является внешним IP-адресом маршрутизатора Cisco RV042.

Мы настроили несколько записей A на нашем внешнем DNS-сервере, которые указывают на этот IP-адрес.

Наш внутренний DNS-сервер разрешает одни и те же записи на внутренний IP-адрес нашего веб-сервера, поэтому компьютеры внутри сети могут получить к ним доступ, используя тот же адрес, как если бы они находились снаружи.

Мы перенаправили внешний порт 80 маршрутизатора на порт 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>

Теперь это работает, если мы находимся в нашей локальной сети.

Однако, если мы находимся за пределами нашей локальной сети, мы попадаем на страницу нашего веб-сервера по умолчанию, говоря:

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

Но мы не можем связаться с виртуальными хостами, как будто доменное имя не сохраняется, когда маршрутизатор пересылает пакеты на веб-сервер.

Я делаю что-то неправильно? Как я могу проверить, что происходит? Какие должны быть настройки, чтобы это работало извне?

Попробуйте включить 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>