HAProxy reqrep 路径 后端 前端

HAProxy reqrep 路径 后端 前端

我想在 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

相关内容