我最近开始尝试traefik
并且正在从nginx
开始。
我对Path
,PathStrip
,PathPrefix
和PathPrefixStrip
中的路径如何处理尾随斜杠感到有点困惑。
在代理请求的nginx
中,这是文档:
如果位置由以斜杠结尾的前缀字符串定义 字符和请求由proxy_pass之一处理, fastcgi_pass,uwsgi_pass,scgi_pass或memcached_pass,然后是 执行特殊处理。响应带URI的请求 等于这个字符串,但没有尾部斜杠,永久性 使用代码301重定向将返回到请求的URI 附加的斜线。如果不需要,则与URI完全匹配 和位置可以这样定义:
location /user/ { proxy_pass http://user.example.com; } location = /user { proxy_pass http://login.example.com; }
如何复制此行为?
基本上我希望traefik
在不存在时附加尾部斜杠,以便PathPrefixStrip:/mylocation/
也匹配/mylocation
并为301
发出/location/
}。
另外,当Path
和PathPrefix
用作Modifiers
时,我对它有点困惑,是否有一些文档解释了各自行为的差异?
谢谢。
答案 0 :(得分:0)
这个问题很旧,对traefik新手用户还是有用的。
这个问题可能与traefik 1.x有关,这里是official matchers documentation for 1.7
它站立着:
路径:/ products /,/ articles / {category} / {id:[0-9] +}匹配确切的请求路径。它接受一系列文字和正则表达式路径。
...
PathPrefix:/ products /,/ articles / {category} / {id:[0-9] +}匹配请求前缀路径。它接受一系列文字和正则表达式前缀路径。
他们对路径Path Matcher Usage Guidelines
也很清楚但这是旧的,不建议使用当前版本。因此,请检查latest documentation
traefik在2.x版本上非常不同。 You can check the migration guide here
现在您需要设置:
在路由器中,template <class _Func>
struct _STL_GENERATOR_ERROR<_Func, void> {
static void __generator_requirement_violation(_Func& __f) {
__f();
}
};
属性是您设置rule
或Path
匹配器的地方。 The rule reference are here
Path(
PathPrefix
,/path
,...)匹配精确的请求路径。它接受一系列文字和正则表达式路径。PathPrefix(
/articles/{cat:[a-z]+}/{id:[0-9]+}
,/products/
)匹配请求前缀路径。它接受一系列文字和正则表达式前缀路径。