我有一个后端试图将流量路由到特定的IP地址和端口。网址上的第一个匹配项不包含端口号。但是,来自网站内部的后续请求未正确重定向。
示例:http://test.com具有服务器123.45.67.89:9080
当我尝试使用URL http://test.com/login->时,URL被正确重定向,并显示登录页面。
但是一旦我提供了登录详细信息,然后按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重定向,它可以完美运行。
如何在Haproxy中重写不带端口号的URL?