在Traefik路由器中绕过OAuth以路由到其他网络设备

87次阅读
没有评论

问题描述

在使用Traefik2时遇到了一个问题。他在router.toml配置文件中定义了Traefik路由器,但在访问特定URL时无法正确绕过OAuth验证。他希望能够在访问特定URL时绕过OAuth验证,并将流量路由到其他网络设备。

解决方案

请注意以下操作可能因版本差异而略有不同,请根据您的实际情况进行调整。

方案

通过检查提供的配置,发现在路由器配置中有一些小错误。以下是一些问题点以及相应的解决方案:

  1. 条件规则错误
    用户在定义路由规则时出现了一个小错误,将rules写成了rule

toml
[http.routers.sonarr-bypass]
rules = "Host(`sonarr.DOMAIN.com`) && Headers(`traefik-auth-bypass-key`, `thekey`)"

正确的写法应该是:

toml
[http.routers.sonarr-bypass]
rule = "Host(`sonarr.DOMAIN.com`) && Headers(`traefik-auth-bypass-key`, `thekey`)"

  1. 中间件顺序设置
    您提到chain-no-authchain-oauth中间件在其他地方能够正常工作,但在这里无法绕过OAuth验证。确保您正确地将这些中间件添加到了路由器上,以便在请求到达时按正确的顺序执行。

``toml
[http.routers.sonarr-bypass]
rule = "Host(
sonarr.DOMAIN.com) && Headers(traefik-auth-bypass-key,thekey`)”
middlewares = [“chain-no-auth”]
service = “sonarr”

[http.routers.sonarr]
rule = “Host(sonarr.DOMAIN.com)”
middlewares = [“chain-oauth”]
service = “sonarr”
“`

  1. 优先级设置
    通常情况下,路由器的优先级由它们在配置文件中的顺序决定。在您的配置中,sonarr-bypass路由器应该在sonarr路由器之前,以便优先匹配。确保在配置文件中的顺序正确。

``toml
[http.routers]
[http.routers.sonarr-bypass]
rule = "Host(
sonarr.DOMAIN.com) && Headers(traefik-auth-bypass-key,thekey`)”
middlewares = [“chain-no-auth”]
service = “sonarr”

[http.routers.sonarr]
rule = “Host(sonarr.DOMAIN.com)”
middlewares = [“chain-oauth”]
service = “sonarr”
“`

进行以上更正后,应该能够成功绕过OAuth验证并正确地将流量路由到其他网络设备。如果您仍然遇到问题,请检查日志以获取更多信息,以帮助您进一步诊断问题。

参考文档:Traefik Configuration Reference

问题解决者的反馈

问题解决者已经发现问题并提供了正确的解决方案。问题出在规则的书写上,将rules误写成了rule。通过更正配置文件中的这个错误,问题成功解决。

结论

在使用Traefik进行路由配置时,确保准确配置规则、中间件以及优先级,以确保流量按预期进行路由。如果您遇到问题,仔细检查配置文件并查阅官方文档,通常可以找到解决方案。

正文完