Как перенаправить запрос с Apache на несколько портов серверов (Zope 8080, Tomcat 8081 и т. Д.)?
Привет я запускаю несколько приложений на одной машине, например Plone, который использует сервер приложений ZOPE, который работает на порте 8080, и Tomcat, который размещает несколько веб-приложений и работает на порту 8081.
Я хочу перенаправить весь мой входящий трафик с сервера apache, который работает на порту 80, на эти серверы, чтобы внешний мир видел только порт 80 по умолчанию для apache. Я перепробовал множество конфигураций для того же, но ни одна из них, похоже, не работает для оба сервера, но да по отдельности, если я настраиваю его работу без нареканий. Таким образом, только одна конфигурация используется, а другая не имеет никакого эффекта.
Моя конфигурация выглядит так: Pastebin Link
Я также попытался со следующей конфигурацией:
<VirtualHost *:80>
ServerName web.url.in
ProxyPreserveHost On
ProxyPass /MNCD2016 http://web.url.in:8081/MNCD2016
ProxyPassReverse /MNCD2016 http://web.url.in:8081/MNCD2016
RewriteEngine on
RewriteRule ^/$ http://web.url.in/MNCD2016
</VirtualHost>
<VirtualHost *:80>
ServerName web.url.in
ProxyPreserveHost On
ProxyPass / http://web.url.in:8080/
ProxyPassReverse / http://web.url.in:8080/
RewriteEngine on
RewriteRule ^/$ http://web.url.in/ckpw
</VirtualHost>
Проблема в том, что конфигурация работает только для одного из портов, а не для обоих. Например, если правило перезаписи Plone выше, оно будет иметь приоритет, а другая конфигурация tomcat не будет работать. Индивидуально они работают без сбоев.
Как я могу заставить их работать одновременно на обоих серверах (Zope, Tomcat), может быть, еще больше в будущем. Таким образом, я могу перенаправить все входящие запросы от apache на эти серверы, и внешний мир должен видеть только apache спереди, а не эти серверы.
Это ссылка, по которой я следовал для настройки Plone.
1 ответ
Вы не хотите иметь несколько блоков VirtualHost с одним и тем же значением ServerName. Вместо этого вы хотите иметь один блок VirtualHost для каждого ServerName и использовать любой ProxyPass из RewriteRule для маршрутизации трафика в соответствующие серверные части. Вот пример использования ProxyPass:
<VirtualHost *:80>
ServerName web.url.in
ProxyPreserveHost On
ProxyRequests Off
ProxyVia On
ProxyPass /MNCD2016/ http://web.url.in:8081/MNCD2016
ProxyPassReverse /MNCD2016/ http://web.url.in:8081/MNCD2016
ProxyPass / http://web.url.in:8080/
ProxyPassReverse / http://web.url.in:8080/
</VirtualHost>