我想在 haproxy 的后端添加一个路径。我不想使用重定向。所以我尝试使用 reqrep
基本上我需要的是:
前端:
resources.mydomain.com/images/path/to/resource.png
然后需要转发到:
backend.mydomain.com/replaced/part/path/to/resource.png
这是我的 cfg
frontend http-in
bind 0.0.0.0:80
mode http
option httplog
acl path_ok path_end .gif
acl path_ok path_end .jpg
acl path_ok path_end .png
http-request deny unless path_ok
use_backend resourceBackend if path_ok
backend resourceBackend
reqrep ^([^\ :]*)\ /images[/]?(.*) \1\/replaced/part/\2
mode http
option httpchk
option forwardfor except 127.0.0.1
http-request add-header X-Forwarded-Proto https if { ssl_fc }
server web-server1 backend.mydomain.com maxconn 32
我测试了我的正则表达式https://regex101.com/而且它似乎有效。
答案1
事实上我忘记了替换中的一个空格:
frontend http-in
bind 0.0.0.0:80
mode http
option httplog
acl path_ok path_end .gif
acl path_ok path_end .jpg
acl path_ok path_end .png
http-request deny unless path_ok
use_backend resourceBackend if path_ok
backend resourceBackend
# Space before /replaced
reqrep ^([^\ :]*)\ /images[/]?(.*) \1\ /replaced/part/\2
mode http
option httpchk
option forwardfor except 127.0.0.1
http-request add-header X-Forwarded-Proto https if { ssl_fc }
server web-server1 backend.mydomain.com maxconn 328
答案2
为了更好地理解 reqrep 的作用和工作原理,你可以查看这个https://github.com/kamleshchandnani/haproxy/blob/master/haproxy-reqrep.md