Я настраиваю веб-сервер 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>