Правила mod_rewrite для приложения VIP to Tomcat - PullRequest
0 голосов
/ 03 мая 2020

Пожалуйста, помогите с моей 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 не обрабатывает перенаправление и пройти правильно.

Спасибо,

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...