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

Два приложения proxypass за apache

Я запускаю два веб-приложения, одно из которых основано на торнадо, а другое - на вишневом, за apache на сервере opensuse. Оба работают в разных доменах, указывающих на один и тот же IP-адрес. Два приложения работают на одном сервере и обслуживают 127.0.0.1 и разные порты - 8090 для приложения cherrypy и 8091 для приложения tornado. Apache настроен для обслуживания приложений с помощью ProxyPass с двумя виртуальными хостами, такими как:

conf1.conf

<VirtualHost domain1.com:80>
        ServerName domain1.com
        ProxyPass / http://127.0.0.1:8090/
        ProxyPassReverse / http://127.0.0.1:8090/

        <Location "/">
                Require all granted
        </Location>
</VirtualHost>

и conf2.conf

<VirtualHost domain2.com:80>
        ServerName domain2.com
        ProxyPass / http://127.0.0.1:8091/
        ProxyPassReverse / http://127.0.0.1:8091/

        <Location "/">
                Require all granted
        </Location>
</VirtualHost>

Однако, когда я пытаюсь получить доступ к любому из них, я получаю 403 запрещено. Кажется, что я могу заставить работать только один из них, если я изменю директиву VirtualHost на *: 80 и удалю другую. Как мне сделать так, чтобы оба они работали одновременно?

Хотя VirtualHost директива поддерживает использование имени хоста в т.е. <VirtualHost example.com:80> это не рекомендуется.

Либо используйте конкретный IP-адрес, либо подстановочный знак * для соответствия любому IP-адресу.

Если у вас нет особых причин не делать этого, я бы предложил использовать <VirtualHost *:80> в обоих файлах конфигурации.