Haproxy 1.7 url 重写 reqrep 不起作用

Haproxy 1.7 url 重写 reqrep 不起作用

我目前正在尝试根据扩展名和子域重写 url,但我的更新不起作用,因此我将尝试解释我的程序:

我想重写这种 url

https://mydomain.tld/image.jpg

https://jpg.mydomain.tld/image

所以我更新了我的 haproxy.cfg 并将这些规则添加到我的前端:

frontend web
    bind *:80
    acl p_ext_jpg path_end -i .jpg
    acl p_ext_png path_end -i .png
    acl mydomain hdr(host) -i mydomain.tld
    reqrep ^([^\ :]*)\ /(*).(jpg|png)     \1\ /\2
    use_backend backend_static if  p_ext_jpg p_ext_png mydomain
    default_backend backend_web

我当前起作用的 nginx 规则:

rewrite "^/([0-9]+).(jpg|png)$" $scheme://$2.mydomain.tld/$1;

我目前的问题:

  1. 我不知道如何用 (jpg|png).mydomain 替换 mydomain
  2. 我的 haproxy 似乎没有使用任何 reqrep

我只想重写 url 并转发到我的后端而不是重定向。

谢谢您的帮助,抱歉我的英语不好。

答案1

您的后端从未被使用,因为您的“if”是隐式 AND。请使用“or”:

use_backend backend_static if mydomain { p_ext_jpg or p_ext_png }

因此你可以重写主机:

reqirep ^Host:\ mydomain.tld Host:\ jpg.mydomain.tld if mydomain p_ext_jpg
reqirep ^Host:\ mydomain.tld Host:\ png.mydomain.tld if mydomain p_ext_png

“http-request” 是一种解决这个问题的“较新”的方法……

相关内容