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

Как правильно использовать VirtualHost и mod_proxy вместе для разных входящих доменных имен и внутренних портов?

Я пытаюсь правильно настроить httpd.conf, но независимо от комбинации поддомена / домена ниже, все они разрешаются к одному и тому же внутреннему URL-адресу.

<Proxy *>
  Order Allow,Deny
  Allow from all
</Proxy>

ProxyRequests       Off


<VirtualHost *:80>
    Servername      jira.firstfactoryinc.com
    ProxyPreserveHost   On
    ProxyPass       /   http://localhost:8082/
    ProxyPassReverse    /   http://localhost:8082/
</VirtualHost>

<VirtualHost *:80>
    Servername      jira.submitpatientforms.com
    ProxyPreserveHost   On
    ProxyPass       /   http://localhost:8081/
    ProxyPassReverse    /   http://localhost:8081/
</VirtualHost>

<VirtualHost *:80>
    Servername      mddev-jira.firstfactoryinc.com
    ProxyPreserveHost   On
    ProxyPass       /   http://localhost:8080/
    ProxyPassReverse    /   http://localhost:8080/
</VirtualHost>

Что я делаю не так?

Вам понадобится NameVirtualHost директива, которая соответствует вашему <VirtualHost> определения, иначе первые <VirtualHost> блок для загрузки будет использоваться для всех запросов на этом порту (это соответствует тому, что вы видите, верно?).

В случае с конфигурацией выше:

NameVirtualHost *:80

Вне VirtualHost блок. Наряду с вашим Listen директива - хорошее место для этого.

Возможно, вам придется добавить что-то подобное в каждый VirtualHost, я сделал:

<Proxy *>
  Order Allow,Deny
  Allow from all
</Proxy>

Очевидно, это можно изменить в соответствии с вашими требованиями безопасности.

Вы также можете добавить:

ProxyRequests Off

Предполагается, что это значение по умолчанию, но в зависимости от вашей версии Apache и версии mod_proxy что-то может действовать.