Пожалуйста, помогите с моей Apache 2.4.6 конфигурацией mod_rewrite.
Обзор сервера
У меня есть две среды, одна работает, другая - нет.
Рабочая У меня есть окружение:
vmdevservice01 (CentOS7), на котором запущена конфигурация apache 2.4.6, предназначенная для перенаправления веб-страницы, работающей на порту 443, для достижения конечной точки на порте 8080. Веб-страница - это просто имя Cm для vmdevservice01 с именем "dev-service.ab.co.uk".
У меня есть нерабочая среда:
vmqaservice01 и vmqaservice02, и обе они имеют ту же файловую систему, управляемую Puppet, что и vmdevservice01, но они сидят за балансировщиком нагрузки F5. В F5 размещен VIP-адрес: «qa-service.ab.co.uk», который балансирует нагрузку при постоянном подключении к одному из двух серверов.
Что мне нужно sh для достижения
http://qa-service.ab.co.uk/
https://qa-service.ab.co.uk/
https://qa-service.ab.co.uk/abfa/frontend-service
https://vmqaservice01/abfa/frontend-service
http://vmqaservice01:8080/abfa/frontend-service
Но я хочу, чтобы URL-адрес "https://qa-service.ab.co.uk/abfa/frontend-service" был передан в приложение tomcat.
Текущая рабочая среда Apache Перезаписать конфигурацию
Для рабочей среды разработки конфигурация mod_rewrite, которую я имею, выглядит следующим образом:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^dev-service.ab.co.uk
RewriteRule ^(.*)$ https://dev-service.ab.co.uk$1 [R=301,L]
RewriteRule ^/$ https://dev-service.ab.co.uk/abfa/frontend-service$1 [R=301,L]
LogLevel alert rewrite:trace8
И журналы выглядят следующим образом:
init rewrite engine with requested uri /
applying pattern '^(.*)$' to uri '/'
RewriteCond: input='dev-service.ab.co.uk' pattern='!^dev-service.ab.co.uk' => not-matched
applying pattern '^/$' to uri '/'
rewrite '/' -> 'https://dev-service.ab.co.uk/abfa/frontend-service'
explicitly forcing redirect with https://dev-service.ab.co.uk/abfa/frontend-service
escaping https://dev-service.ab.co.uk/abfa/frontend-service for redirect
redirect to https://dev-service.ab.co.uk/abfa/frontend-service [REDIRECT/301]
init rewrite engine with requested uri /abfa/frontend-service
applying pattern '^(.*)$' to uri '/abfa/frontend-service'
RewriteCond: input='dev-service.ab.co.uk' pattern='!^dev-service.ab.co.uk' => not-matched
applying pattern '^/$' to uri '/abfa/frontend-service'
pass through /abfa/frontend-service
init rewrite engine with requested uri /abfa/oauth_redir
applying pattern '^(.*)$' to uri '/abfa/oauth_redir'
RewriteCond: input='dev-service.ab.co.uk' pattern='!^dev-service.ab.co.uk' => not-matched
applying pattern '^/$' to uri '/abfa/oauth_redir'
pass through /abfa/oauth_redir
init rewrite engine with requested uri /abfa/frontend-service
Здесь можно увидеть tcpdump:
15:42:41.507535 IP 172.28.253.101.51170 > vmdevservice01.fqdn.co.uk.https: Flags [P.], seq 518:569, ack 138, win 259, length 51
15:42:41.508017 IP 172.28.253.101.51170 > vmdevservice01.fqdn.co.uk.https: Flags [P.], seq 569:1461, ack 138, win 259, length 892
15:42:41.508024 IP vmdevservice01.fqdn.co.uk.https > 172.28.253.101.51170: Flags [.], ack 1461, win 251, length 0
15:42:41.511153 IP vmdevservice01.fqdn.co.uk.37794 > certauth.sso.fqdn.co.uk.https: Flags [S], seq 725833268, win 29200, options [mss 1460,sackOK,TS val 311843221 ecr 0,nop,wscale 7], length 0
15:42:41.511973 IP certauth.sso.fqdn.co.uk.https > vmdevservice01.fqdn.co.uk.37794: Flags [S.], seq 3903296491, ack 725833269, win 4380, options [mss 1460,nop,nop,TS val 3414776602 ecr 311843221,sackOK,eol], length 0
15:42:41.511988 IP vmdevservice01.fqdn.co.uk.37794 > certauth.sso.fqdn.co.uk.https: Flags [.], ack 1, win 29200, options [nop,nop,TS val 311843222 ecr 3414776602], length 0
Дамп из Fiddler может быть показан ниже:
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
920 200 HTTP Tunnel to dev-service.ab.co.uk:443 0 firefox:27576
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
921 301 HTTPS dev-service.ab.co.uk / 257 text/html; charset=iso-8859-1 firefox:27576
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
922 302 HTTPS dev-service.ab.co.uk /abfa/frontend-service 0 firefox:27576
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
923 200 HTTP Tunnel to sso.fqdn.co.uk:443 0 firefox:27576
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
924 302 HTTPS sso.fqdn.co.uk /adfs/oauth2/authorize/?client_id=89067f72-4aea-4936-803c-286e1774c83a&redirect_uri=https://dev-service.ab.co.uk/abfa/oauth_redir&response_type=code&scope=openid&state=795b48d2-48e7-4331-82fe-99411e22fe18&claims=%7B%22userinfo%22:%7B%22sub%22:%7B%22essential%22:true%7D%7D,%22id_token%22:%7B%22sub%22:%7B%22essential%22:true%7D%7D%7D&nonce=5d4dacfb9afbe19c 0 text/html; charset=utf-8 firefox:27576
Текущее нерабочее состояние Apache Перезаписать конфигурацию
Для нерабочего qa окружающая среда, конфигурация mod_rewrite, которую я имею, выглядит следующим образом:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^qa-service.ab.co.uk
RewriteRule ^(.*)$ https://qa-service.ab.co.uk$1 [R=301,L]
RewriteRule ^/$ https://qa-service.ab.co.uk/abfa/frontend-service$1 [R=301]
RewriteRule ^/$ http://vmqaservice01:8080/abfa/frontend-service$1 [PT]
LogLevel alert rewrite:trace8
И журналы выглядят следующим образом:
init rewrite engine with requested uri /
applying pattern '^(.*)$' to uri '/'
RewriteCond: input='' pattern='!^qa-service.ab.co.uk' => matched
rewrite '/' -> 'https://qa-service.ab.co.uk/'
explicitly forcing redirect with https://qa-service.ab.co.uk/
escaping https://qa-service.ab.co.uk/ for redirect
redirect to https://qa-service.ab.co.uk/ [REDIRECT/301]
Здесь можно увидеть tcpdump:
15:40:50.061828 IP 172.28.253.101.51046 > vmqaservice01.fqdn.co.uk.https: Flags [S], seq 2114654961, win 4104, options [mss 1368,nop,nop,TS val 3414665152 ecr 0,sackOK,eol], length 0
15:40:50.061852 IP vmqaservice01.fqdn.co.uk.https > 172.28.253.101.51046: Flags [S.], seq 394345988, ack 2114654962, win 28960, options [mss 1460,sackOK,TS val 311732583 ecr 3414665152], length 0
15:40:51.128597 IP vmqaservice01.fqdn.co.uk.https > 172.28.253.101.51046: Flags [S.], seq 394345988, ack 2114654962, win 28960, options [mss 1460,sackOK,TS val 311733650 ecr 3414665152], length 0
Дамп из Fiddler можно увидеть ниже:
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
1007 200 HTTP Tunnel to qa-service.ab.co.uk:443 0 firefox:27576
Я уже некоторое время ломал голову над этой проблемой, и помощь была бы огромной Очень признателен.
Из того, что я понимаю, нет никаких брандмауэров, блокирующих это, F5 определенно работает так, как ожидается, как видно из журналов TCPdump
Приложение qa не обрабатывает перенаправление и пройти правильно.
Спасибо,
Марк