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

Как перенаправить запрос с apache на несколько портов серверов (Zope 8080, Tomcat 8081 и т. Д.)?

Привет, я запускаю несколько приложений на одном компьютере, например Plone, который использует сервер приложений ZOPE, который работает на порту 8080, и Tomcat, на котором размещено несколько веб-приложений и работает на порту 8081.

Я хочу перенаправить весь свой входящий трафик с сервера apache, который работает на порту 80, на этот сервер, чтобы внешний мир видел только порт 80 по умолчанию apache. Я пробовал много конфигураций для того же, но ни одна из них, похоже, не работает для оба сервера, но да индивидуально, если я настраиваю его работу безупречно. Таким образом, используется только одна конфигурация, а другая не имеет никакого эффекта.

Моя конфигурация выглядит так: Ссылка Pastebin

Я также пробовал со следующей конфигурацией:

 <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.

Вы не хотите иметь несколько блоков 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>