Я запускаю два веб-приложения, одно из которых основано на торнадо, а другое - на вишневом, за 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>
в обоих файлах конфигурации.