ProxyPass перенаправляет на тот же путь

У меня есть две wildlfy консоли управления, и я хочу получить доступ к ним через обратный прокси. Для этого я сделал это в своем обратном прокси httpd:

<VirtualHost X.X.X.X:80>
ServerName reverse.com

ProxyPreserveHost On
RewriteEngine On

<Proxy balancer://wildfly-1>
BalancerMember http://wildfly-1.com route=wildfly-1 disablereuse=On keepalive=On retry=20
ProxySet lbmethod=bybusyness
</Proxy>

RewriteRule ^/wildfly-1-console/?$ / [R]
ProxyPass / balancer://wildfly-1/ stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / balancer://wildfly-1/

<Proxy balancer://wildfly-2>
BalancerMember http://wildfly-2.com route=wildfly-2 disablereuse=On keepalive=On retry=20
ProxySet lbmethod=bybusyness
</proxy>

RewriteRule ^/wildfly-2-console/?$  / [R]
ProxyPass / balancer://wildfly-2/ stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / balancer://wildfly-2/

</VirtualHost>

Моя проблема в том, что когда я ввожу http://X.X.X.X:80/wildlfy1 или 2, он работает, rewriterules работает отлично и перенаправляет на консоль управления, но только для первой консоли. Я думаю, что проблема в моих rewriterules, они перенаправляют на тот же путь "/", поэтому мой реверс игнорирует второе перенаправление. Как я могу это решить?

Спасибо.

Вы не можете перенаправить / на два разных URL-адреса. Apache будет соответствовать первому и проигнорирует остальную часть конфигурации. Таким образом, вы должны различать wildfly1 и wilfly2 в URL-адресе. Удалите оба RewriteRule и измените ваш ProxyPass /wildfly1-console balancer://wildfly1/ ..., то же самое для ProxyPassRevers и для wildfly2. другой момент, вы можете сделать это без использования балансиров. Балансировка - это когда у вас есть два экземпляра одного и того же. Здесь вы просто перенаправляете напрямую.

Nic3500 09.09.2018 21:33

Спасибо @ Nic3500 за ответы. Я тестирую ваше решение, но когда я ввожу reverse.com/wildlfy1-console, он ищет консоль локально. и для балансировки, если я этого не сделаю, это дает мне синтаксическую ошибку «Неизвестный рабочий параметр ProxyPass» для липкой сессии, и мне это нужно.

Bouras Ayoub 09.09.2018 23:58

Смотрите мой ответ ниже.

Nic3500 10.09.2018 02:12
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
3
800
1

Ответы 1

это был длинный комментарий. Вот что я имел в виду:

<VirtualHost X.X.X.X:80>
    ServerName reverse.com

    ProxyPreserveHost On
    RewriteEngine On

    ProxyPass        /wildfly-1-console http://wildfly-1.com
    ProxyPassReverse /wildfly-1-console http://wildfly-1.com

    ProxyPass        /wildfly-2-console http://wildfly-2.com
    ProxyPassReverse /wildfly-2-console http://wildfly-2.com
</VirtualHost>

Таким образом, каждый URL-адрес передается через прокси на другой сайт. Обратите внимание, что это далеко не полная конфигурация, это просто демонстрация концепции. Я также не смог его протестировать, так как у меня сейчас нет доступа к Apache.

Что касается липкого сеанса, вы применяете концепции балансировщика к одному члену, поэтому он бесполезен. Прикрепленный файл cookie гарантирует, что вы будете возвращаться к одному и тому же экземпляру при каждом запросе. Вот просишь №1, получаешь №1. Если вы попросите №2, вы получите №2. Вы не можете запросить /wildfly-1-console и получить "проксирование" в http://wildfly-2.com.

Теперь, если вы хотите иметь один URL-адрес для прокси перед http://wildfly-1.com И http://wildfly-2.com, это тема для другого вопроса (ну, некоторые исследования с вашей стороны :-)

Привет @ Nic3500. Я тестировал это раньше, но проблема не устранена. Когда я пытаюсь получить прямой доступ к консоли wildfly-1 wildlfy-1.com, он перенаправляет меня изначально на wildlfy-1.com/console/App.html, и когда я пытаюсь использовать его за своим реверсом с помощью ProxyPass / http://wildlfy-1.com/ conf, он работает. но с ProxyPass, установленным как этот ProxyPass /wildfly-console1 http://wildlfy-1.com/, он не работает, и когда я ввожу Revese.com/wildfly-1-console, он перенаправляет меня локально с помощью Revese.com/console/index.html, поэтому я не знаю, в чем проблема.

Bouras Ayoub 10.09.2018 18:56

Другие вопросы по теме