haproxy 隐藏后端网址

haproxy 隐藏后端网址

是否可以使用 haproxy 隐藏后端服务器的 URL 路径?后端服务器的 URL 路径是https://backend:8443/backend_url(/.*) 我希望始终将 URL 路径保留在浏览器中https://haproxy/haproxy_url(/.*)

后端应用程序在 tomcat 中运行,并且有一些 j_spring_security_check 会破坏正常的重写和代理,这就是我尝试使用 haproxy 对其进行反向代理的原因。我还需要在 haproxy 上为多个应用程序重用端口 443,并且 haproxy 为所有传入的 SSL 流量托管组织通配符证书。

使用我当前的配置,haproxy URL 从 更改https://haproxy/haproxy_url(.)https://haproxy/backend_url(/.*)

我怎样才能永远保留它https://haproxy/haproxy_url(/.*)

我当前的配置是:

frontend https-in
    bind *:443 ssl crt /usr/local/etc/haproxy/ssl/domain.pem
    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443
    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000
    # some ACLs and URL rewrites...
    default_backend https-in-backends

backend https-in-backends
    http-request set-header X-Forwarded-Host %[req.hdr(Host)]
    http-request del-header X-Forwarded-Port
    http-request set-header X-Forwarded-Proto https if { ssl_fc }
    stick                   on src
    stick-table             type ip size 10240k expire 60m
    acl                     no_redir url_beg   /haproxy_url
    reqirep                 ^([^\ :]*)\ /haproxy_url(.*)       \1\ /backend_url\2
    rspirep                 ^([^\ :]*)\ (.*)/haproxy_url(.*)    \1\ \2/backend_url/\3
    server backend_srv backend1:8443/backend_url ssl verify none

答案1

我通过在后端配置中修改对浏览器的响应来解决这个问题。不知道这是否是可接受的方法,但对我来说很有效。

rspirep ^(Location:)\ https://([^/]*)/backend_url(.*)$ \1\ https://\2/haproxy_url\3

不幸的是 j_spring_security_check 仍然使一切变得糟糕。:-(

相关内容