我想问一下 HAProxy 如何根据 URL 的各个部分来帮助路由请求。
为了让您大致了解我的设置,我有 HAProxy 机器和两个后端:
- IIS 网站(主站点)
- NGINX 上的 Wordpress 博客(一个子站点)
用例:
我期望根据 URL 路由请求:
- www.website.com/lang/index.aspx -> 主站点
- www.website.com/lang/blog/articlexx -> 博客子站点
博客访问 URL 是“ /server/blog/lang/articlexx ”,所以我必须将原始客户端请求重写为该格式——这基本上是切换“博客”和“语言”。
根据我对配置文档和网上一些帖子的理解,我可以使用 reqrep/reqirep 在将请求 HTTP 标头传递到后端之前更改它。如果这是正确的,那么这个配置应该可以工作:
frontend vFrontLiner
bind x.x.x.x:x
mode http
option httpclose
default_backend iis_website
# the switch: x/lang/blog -? x/blog/lang
reqirep ^/(.*)/(blog)/(.*) /if\2/\1/\3
acl blog path_beg -i /lang/blog/
use_backend blog_website if blog
backend blog_website
mode http
option httpclose
cookie xxblogxx insert indirect nocache
server BLOG1 x.x.x.x:80 cookie s1 check inter 5s rise 2 fall 3
server BLOG2 x.x.x.x:80 cookie s2 check inter 5s rise 2 fall 3 backup
问题: blog_website 后端收到的请求仍然是原始 URL “x/lang/blog”。
我可能错过了正则表达式部分的某些内容,但我主要关心的是我的理解是否正确,首先要使用 reqirep。我将不胜感激任何帮助。
非常感谢。