我目前正在尝试根据扩展名和子域重写 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;
我目前的问题:
- 我不知道如何用 (jpg|png).mydomain 替换 mydomain
- 我的 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” 是一种解决这个问题的“较新”的方法……