gpt4 book ai didi

regex - Haproxy路由和基于URI路径的重写

转载 作者:行者123 更新时间:2023-12-03 20:27:28 29 4
gpt4 key购买 nike

我正在尝试设置Haproxy以在uri路径标识的一些后端上负载均衡请求。例如:


https://www.example.com/v1/catalog/foo/bar


应该导致“ catalog-v1”后端。

事情是每个应用程序在不同的路径上响应,所以我不仅必须识别应用程序,还必须重写URL路径。例如。


https://www.example.com/v1/catalog/product
https://www.example.com/v2-2/checkout/cart/123
https://www.example.com/v3.1.2/checkout/cart





https://www.example.com/catalog-v1/product
https://www.example.com/checkout-v2-2/cart/123
https://www.example.com/checkout-v3.1.2/cart


我知道我不应该将Haproxy用于重写目的,但是目前这是不可避免的。

尝试了以下可用于regex101的正则表达式:

([a-z.]*)\/([a-z0-9\-\.]*)\/([a-z\-]*)\/(.*)


替代:

\1/\3-\2/\4


最后是haproxy.config:

global
daemon
user root
group root
maxconn 256000
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
stats socket /run/haproxy/stats.sock mode 777 level admin
defaults
log global
option dontlognull
maxconn 4000
retries 3
timeout connect 5s
timeout client 1m
timeout server 1m
option redispatch
balance roundrobin

listen stats :8088
mode http
stats enable
stats uri /haproxy
stats refresh 5s

backend catalog-v1
mode http
option httpchk GET /catalog-v1/ping
http-check expect status 200
reqrep ([a-z.]*)\/([a-z0-9\-\.]*)\/([a-z\-]*)\/(.*) \1/\3-\2/\4
server 127.0.0.1:8280_catalog-v1-node01 127.0.0.1:8280 check inter 2s rise 3 fall 2

backend checkout-v1
mode http
option httpchk GET /checkout-v1/ping
http-check expect status 200
reqrep ([a-z.]*)\/([a-z0-9\-\.]*)\/([a-z\-]*)\/(.*) \1/\3-\2/\4
server 127.0.0.1:8180_checkout-v1-node01 127.0.0.1:8180 check inter 2s rise 3 fall 2

frontend shared-frontend
mode http
bind localhost:80
acl is-catalog-v1-path path_dir /v1/catalog
acl is-checkout-v1-path path_dir /v1/checkout
use_backend catalog-v1 if is-catalog-v1-path
use_backend checkout-v1 if is-checkout-v1-path


我想念什么吗?

我已经为此苦苦挣扎了很长时间,没有成功。后端在Haproxy的统计信息页面中显示“ UP”,但是每次我调用“未重写的url”时,都会收到400 Bad Request错误。

在此先感谢您的帮助!

最佳答案

如果我对您的理解正确,请替换以下示例:

reqrep ^([^\ ]\*)\ /([-.0-9A-Za-z]\*)/([a-zA-Z]\*)/(.\*)  \1\ /\3-\2/\4


http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#reqrep

reqrep search string [{if | unless} cond]


您没有空格。

关于regex - Haproxy路由和基于URI路径的重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24784517/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com