针对不同路径的Marathon-lb规则

时间:2017-07-27 07:43:43

标签: haproxy marathon dcos

我的马拉松-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;
    }

1 个答案:

答案 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",

注意缩进的双倍空格。并不是说你必须玩逃脱才能使其发挥作用。