尾部斜线和路线

时间:2018-03-10 23:36:29

标签: traefik

我最近开始尝试traefik并且正在从nginx开始。

我对PathPathStripPathPrefixPathPrefixStrip中的路径如何处理尾随斜杠感到有点困惑。

在代理请求的nginx中,这是文档:

  

如果位置由以斜杠结尾的前缀字符串定义   字符和请求由proxy_pass之一处理,   fastcgi_pass,uwsgi_pass,scgi_pass或memcached_pa​​ss,然后是   执行特殊处理。响应带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/ }。

另外,当PathPathPrefix用作Modifiers时,我对它有点困惑,是否有一些文档解释了各自行为的差异?

谢谢。

1 个答案:

答案 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(); } }; 属性是您设置rulePath匹配器的地方。 The rule reference are here

Path(PathPrefix/path,...)匹配精确的请求路径。它接受一系列文字和正则表达式路径。

PathPrefix(/articles/{cat:[a-z]+}/{id:[0-9]+}/products/)匹配请求前缀路径。它接受一系列文字和正则表达式前缀路径。