不同路径的 Marathon-lb 规则

Marathon-lb rules for different paths

我的 marathon-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=? break;
    }

您可能知道 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",

注意缩进的双空格。并不是说你必须玩转义才能让它发挥作用。