我的马拉松-lb配置:
"labels": {
"HAPROXY_GROUP": "external",
"HAPROXY_0_VHOST": "test.com",
"HAPROXY_0_MODE": "http"
}
我希望它只将test.com/12345
之类的请求路由到内部端点
/results?q=123
。如何实现?
P.S。出于同样目的的Nginx规则如下:
location ~* /[\w\-]+?$ {
proxy_pass http://127.0.0.1:8094;
rewrite ^/([\w\-]+?)$ //results?q=$1? break;
}
答案 0 :(得分:1)
你可能知道marathon-lb是HAProxy加上一些包装器。您可以使用HAPROXY_0_BACKEND_HTTP_OPTIONS标签将重定向添加到HAProxy configuration。有一个遗留的reqrep语句,你可能会觉得方便,你也可以去301重定向。例如,你可以这样做:
"HAPROXY_0_BACKEND_HTTP_OPTIONS": " reqrep ^/([\w\-]+?)$ /results?q=\\1 \n",
或
"HAPROXY_0_BACKEND_HTTP_OPTIONS": " acl is_foo path -i /foo \n redirect code 301 location /bar if is_foo\n",
注意缩进的双倍空格。并不是说你必须玩逃脱才能使其发挥作用。