Haproxy удалить номер порта из URL - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть серверная часть, пытающаяся направить трафик на определенный IP-адрес и порт.Первый удар по URL не содержит номер порта.Но последующие запросы внутри сайта не перенаправляются должным образом.

Пример: http://test.com имеет сервер 123.45.67.89:9080

Когда я пробую URL-адрес http://test.com/login -> Он перенаправляется правильно, и я получаю логинстр.

Но как только я предоставлю данные для входа и нажму OK.Он перенаправляется на http://test.com:9080/loginSuccess.

Страница доступна под http://test.com/loginsuccess

Это код бэкэнда, и все комментарии, которые я пробовал из другого решения, комментируются.

backend lf_was_9080
   acl auth_lf_was http_auth(lf_was_auth_list)
   http-request auth realm lf_was_auth_list if !auth_lf_was
   mode http

   #TRY 1
   #http-request redirect prefix http://test.com/login if { hdr(host) -i test.com:9080/login }

   #TRY 2
   # Clean the request and remove any existing header named X-Rewrite
   http-request del-header X-REWRITE

   # Copy the full request URL into X-Rewrite unchanged
   http-request add-header X-REWRITE %[url] if { path_sub 9080/login }

   # Change the X-REWRITE header to contain out new path
   http-request replace-header X-REWRITE ^:9080/login(/.*)?$ /login\1 if { hdr_cnt(X-REWRITE) gt 0 }

   # Perform the 301 redirect
   http-request redirect code 301 location http://%[hdr(host)]%[hdr(X-REWRITE)] if { hdr_cnt(X-REWRITE) gt 0 }

   #TRY 3
   #reqrep ^([^\ :]*)\ /login/(.*)     \1\ /login/\2

   #TRY 4
   #http-request redirect prefix https://test.com if { hdr(host) -i test.com:9080 }
  server lf_was_9080 10.85.200.158:9080 check

У меня также есть перенаправление https, которое работает отлично.

Как я могу переписать URL-адрес без номера порта в Haproxy?

...