Traefik 有无对应 NGINX error_page 497 的配置?

2022-03-31 21:09:18 +08:00
 RRyo

2.6.x 版本 k8s/k3s 环境部署

entrypoint 启用 tls 提供 https 服务,在该 entrypoint 端口收到 http 请求时,本来预计应该得到一个类似 nginx 的 http code = 497 的错误,结果实测结果是 404 ,尝试加 middleware 正则匹配修改 /重定向均无效,原因似乎是在匹配 router 的时候这个 entrypoint 下匹配 schema 永远都是 http!=https 所以请求无法命中任何一条 router 配置,更后面的中间件也就自然无效了,直接在 traefik 启动 cli 里给 entrypoint 加默认中间件同样未执行

这就有点坑爹了,在 IngressRoute 里试了好几种 match 规则也不能匹配到这种乱入 https 端口的 http 流量

说实话就算 497 不是 RFC 定义,那我已经配置了符合 HOST 条件的 router ,讲道理也应该是被 router 命中后返回 400 吧,现在没有 router 能命中永远返回个 404 ,也没法配置处理这个异常也太难顶了 nginx 里一句 error_page 497 https://$host:$server_port$uri$is_args$args;

能搞定的事情,琢磨了半天也不知道在 traefik 上咋整,向各位 dalao 求教,这问题除了在 traefik 前面加一层 nginx 帮它把这个活儿干了之外有没有什么能直接通过 traefik 解决的方式?

1000 次点击
所在节点    问与答
2 条回复
aragakiyuii
2022-03-31 22:02:43 +08:00
再配一个 80 端口的 entryPoints 应该可以把
RRyo
2022-04-01 10:53:46 +08:00
@aragakiyuii 开个 80 的其实是利用自动给 http+80 https+443 把这部分分离了,但非标准端口就没法解决(比如 8443 )
实际遇到的问题是家里一套环境通过 traefik 统一管理对外暴露+SSL 变 https ,(集群)内部走 http ,有部分应用在重定向跳转的时候没有读取客户端到 traefik 这一段走的 https ,返回的仍然是 http 的跳转 /文件 url ,这样就有 http 请求被发送到 https 的 entrypoints 上了,在很久以前用 nginx 做网关的时候遇到这个问题就是用 error_page 497 直接把请求改跳到对应的 https 上,现在用 traefik 因为 router 的匹配机制现在就尬住了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/844179

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX