HAProxy 子域和路径重定向

HAProxy 子域和路径重定向

我是 StackExchange 的新手,正在尝试寻求一些有关配置问题的帮助。我需要为 HAProxy 创建一个配置,以便我能够动态地将 Tomcat 应用程序上下文路径代理到子域。子域/路径不能硬编码,而应设置为变量。我查看了整个网站的其他建议,但没有一个涉及这个特定问题。到目前为止,我已经从各种现有建议中整理出这个配置。

这就是我需要的。

  • 用户请求 ->http://site1.domain.com/path
  • 重定向到 https
  • 然后,HAProxy 使用 URL 向其后端池发出请求http://<ip>:8080/site1/path

当 tomcat 应用程序返回资产链接时,它们也会有一个需要重定向的路径。

  • 网站返回https://site1.example.com/site1/image.jpg
  • 如果存在,则从路径中删除第一个 site1。https://site1.example.com/image.jpg

我已经使用本网站的示例和其他指南取得了如此大的成就,但我对这一领域的了解有限。我不确定如何删除路径中的 site1。

# Frontend Definition
frontend tomcat_contexts
    bind *:80
    bind *:443 ssl crt /etc/haproxy/cert.pem
    acl http ssl_fc,not
    http-request redirect scheme https if http
    reqadd X-Forwarded-Proto:\ https
    default_backend cluster

# Backend Definition
backend cluster
    balance roundrobin
    cookie JSESSIONID prefix nocache

    # Perform Subdomain url rewrite
    http-request set-var(req.subdomain) req.hdr(host),lower,regsub(\.example\.com$,) if { hdr_end(host) -i .domain.com }
    http-request set-path /%[var(req.subdomain)]%[path] if { var(req.subdomain) -m found }
    http-request set-header Host example.com if { var(req.subdomain) -m found }

    # Cluster machines
    server app01 192.168.69.181:8080 check cookie app01
    server app02 192.168.69.182:8080 check cookie app02

欢迎大家提出意见。

相关内容