Je voudrais ajouter un chemin dans mon backend dans haproxy. Je ne veux pas utiliser la redirection. J'essaie donc d'utiliser reqrep

En gros ce dont j'ai besoin :

l'extrémité avant:

resources.mydomain.com/images/path/to/resource.png

Ensuite, il doit transmettre à :

backend.mydomain.com/replaced/part/path/to/resource.png

voici mon 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

J'ai testé mon regexp sur https://regex101.com/ et cela semble fonctionner.

answer

En fait j'ai oublié un espace dans le remplacement :

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

Pour mieux comprendre ce que fait reqrep et comment cela fonctionne, vous pouvez consulter ceci https://github.com/kamleshchandnani/haproxy/blob/master/haproxy-reqrep.md