Как перенаправить запрос с 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>
Другие вопросы по тегам