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

Обратный прокси-сервер Apache ajp перенаправляет определенную страницу на https

у меня есть обратный прокси-сервер с балансировкой нагрузки apache с участием mod_proxy_ajp запуск и перенаправление на бэкэнд Кот серверы. Я также создал отдельный виртуальный хост для HTTPS(SSL) вместе с HTTP виртуальный хостинг. Оба ниже http://my.domain.net/ и https://my.domain.net/ виртуальные хосты доступны и работают нормально индивидуально.

http ##:

<VirtualHost *:80>
ServerName my.domain.net

ProxyRequests On
ProxyVia On
ProxyPreserveHost On
ProxyErrorOverride On
ProxyStatus On

<Proxy balancer://ClusterDomain>
    Order deny,allow
    Allow from all

BalancerMember ajp://192.168.1.22:8009 route=web1 redirect=web2 ttl=300 timeout=5 retry=60
BalancerMember ajp://192.168.1.23:8009 route=web2 redirect=web1 ttl=300 timeout=5 retry=60
BalancerMember ajp://192.168.1.21:8009 route=balancer1 status=+H disablereuse=on


  ProxySet lbmethod=byrequests
  ProxySet stickysession=JSESSIONID|jsessionid
</Proxy>

ProxyPass /errors !
ProxyPass /balancer-manager !
ProxyPass / balancer://ClusterDomain/ nofailover=off
ProxyPassReverse / balancer://ClusterDomain/


# Balancer-manager for ajp proxy nodes management
<Location /balancer-manager>
        SetHandler balancer-manager
        Order deny,allow
        Allow from all
</Location>

#Recording virtual host logs
LogLevel Debug
CustomLog /var/log/apache2/my.domain.com-access.log combined
ErrorLog  /var/log/apache2/my.domain.com-error.log

</VirtualHost>

https ##:

NameVirtualHost 123.123.123.123:443
<VirtualHost 123.123.123.123:443>
ServerName my.domain.net

SSLEngine on
SSLProxyEngine On
SSLCertificateFile    /etc/ssl/myapp/server.crt
SSLCertificateKeyFile /etc/ssl/myapp/server.pem

ProxyRequests On
ProxyVia On
ProxyPreserveHost On
ProxyErrorOverride On
ProxyStatus On

<Proxy balancer://ClusterDomain>
    Order deny,allow
    Allow from all

BalancerMember ajp://192.168.1.22:8009 route=web1 redirect=web2 ttl=300 timeout=5 retry=60
BalancerMember ajp://192.168.1.23:8009 route=web2 redirect=web1 ttl=300 timeout=5 retry=60
BalancerMember ajp://192.168.1.21:8009 route=balancer1 status=+H disablereuse=on


  ProxySet lbmethod=byrequests
  ProxySet stickysession=JSESSIONID|jsessionid
</Proxy>

ProxyPass /errors !
ProxyPass / balancer://ClusterDomain/ nofailover=off
ProxyPassReverse / balancer://ClusterDomain/


 BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>

Я искал в SF если кто-то уже задавал этот вопрос, но не нашел. Большинство из них спрашивали, как полностью перенаправить с http на https, но в моем случае это немного отличается, так как я хочу, чтобы только определенные страницы были перенаправлены на защищенную страницу, но он НЕ должен полностью перенаправлять на https при попытке с http.

Как перенаправить определенную http-страницу (пусть http://my.domain.net/register) на защищенный https (https://my.domain.net/register) в моем случае на основе указанного выше виртуального хостинга ?. Можно ли сделать с прокси ajp ?. Мне нужны как http, так и https, доступные при доступе по отдельности, но только определенная страница должна быть принудительно перенаправлена ​​на защищенную страницу. Могу я это сделать?

Обновление 1

Я действительно очень плохо понимаю правила перезаписи apache !!!.

Как было предложено KM01 Я пробовал переписывать правила.

Игнорировать правила просто, просто перенаправив на http страница при доступе http://my.domain.net/register даже после добавления следующих правил на виртуальном хостинге для перенаправления https.

rewrite правило

RewriteRule ^/register/$ https://my.domain.net/register [R=301]

(или)

Я также пробовал с Redirect

RedirectMatch ^/register/$ https://my.domain.net/register

Обновление 2

После некоторых попыток возникли основные мысли!

У меня есть оба rewrite и redirect работает!. Ключевым моментом было ИСКЛЮЧЕНИЕ страницы (/ register) из перенаправления прокси, которая должна быть перенаправлена ​​на защищенную страницу https !.

Первый Redirect работал таким образом,

ProxyPass /register !
RedirectMatch /register https://my.domain.net/register
#(or) RedirectMatch permanent /register https://my.domain.net/register

И Rewrite,

Даже после исключения /register с прокси у меня не сработало. Мне пришлось использовать RewriteEngine on хотя с включенным модулем перезаписи.

Добавляя следующее,

ProxyPass /register !
RewriteEngine on
RewriteRule ^/register/$ https://my.domain.net/register [R=301]

Я не знаю, правильный ли это способ, но он работает KV01помощь

Спасибо KV01 !!!

Вы можете добиться того, что пытаетесь сделать, с помощью перезаписи / перенаправления. Что-то вроде этого в вашей конфигурации vhost должно работать (сначала проверьте на тестовом сервере, прежде чем переходить к производству):

#requires mod_rewrite
RewriteRule ^/register$ https://my.domain.com/register [R=301]

В этих правилах сказано, что перенаправлять только то, что запускается (^) и заканчивается ($) и между ними содержит /register. Это не приведет к перенаправлению любого другого пути, только этого.

HTH