![HAProxy 子域和路径重定向](https://linux22.com/image/711603/HAProxy%20%E5%AD%90%E5%9F%9F%E5%92%8C%E8%B7%AF%E5%BE%84%E9%87%8D%E5%AE%9A%E5%90%91.png)
我是 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
欢迎大家提出意见。