У меня есть две 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, они перенаправляют на тот же путь "/", поэтому мой реверс игнорирует второе перенаправление. Как я могу это решить?
Спасибо.
Спасибо @ Nic3500 за ответы. Я тестирую ваше решение, но когда я ввожу reverse.com/wildlfy1-console, он ищет консоль локально. и для балансировки, если я этого не сделаю, это дает мне синтаксическую ошибку «Неизвестный рабочий параметр ProxyPass» для липкой сессии, и мне это нужно.
Смотрите мой ответ ниже.
это был длинный комментарий. Вот что я имел в виду:
<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, поэтому я не знаю, в чем проблема.
Вы не можете перенаправить
/
на два разных URL-адреса. Apache будет соответствовать первому и проигнорирует остальную часть конфигурации. Таким образом, вы должны различать wildfly1 и wilfly2 в URL-адресе. Удалите обаRewriteRule
и измените вашProxyPass /wildfly1-console balancer://wildfly1/ ...
, то же самое дляProxyPassRevers
и для wildfly2. другой момент, вы можете сделать это без использования балансиров. Балансировка - это когда у вас есть два экземпляра одного и того же. Здесь вы просто перенаправляете напрямую.