gpt4 book ai didi

traefik - 如何将带有参数的原始 URI 传递给 `query` 中指定的 Traefik ErrorPage 处理程序?

转载 作者:行者123 更新时间:2023-12-03 17:09:40 25 4
gpt4 key购买 nike

我正在尝试使用 nginx 来提供使用 Error Page middleware 的自定义错误页面以便可以使用自定义错误页面处理对 lambda 服务(我无法控制)的 404 请求。我希望能够在该错误页面上获取此原始请求的上下文,要么在 Nginx 中进行进一步转发,要么作为进一步处理的 header ,例如在 PHP 或诸如此类的内容中,因此我可以在 404 页面上提供上下文链接。
但是,现在在 Traefik 的 ErrorPage 中间件中重定向到 Nginx 之后,请求似乎丢失了原始服务查询中的所有 header 和数据。
我的 dockerfile 的相关部分:

traefik.port=8080
traefik.protocol=http
traefik.docker.network=proxy
traefik.frontend.rule=PathPrefix:/myservice;ReplacePathRegex:^/myservice/(.*) /newprefix/$$1
traefik.frontend.errors.myservice.status=404
traefik.frontend.errors.myservice.service=nginx
traefik.frontend.errors.myservice.query=/myservice-{status}
Nginx 收到转发的 404 请求,但请求 URI 只是路径 /myservice-404在查询中指定(或 / ,如果我省略 traefik.frontend.errors.myservice.query )。在 ReplacePathRegex 之后,我在 HTTP_X_REPLACED_PATH 中获得了原始请求的路径。 header ,但在任何 header 中都无法再访问任何查询参数,并且 nginx 无法看到有关原始 URI 的任何其他信息。例如,如果我请求 mysite.com/myservice/some/subpath?with=parameters , HTTP_X_REPLACED_PATH标题将显示 /myservice/some/subpath但不包括参数。
Traefik 是否可以将有关原始请求的完整上下文传递给另一个服务?
我真正在寻找的是类似 try_files 的东西,在那里我可以说“如果这个 traefik 请求失败,请尝试其他路径”,但我会满足于能够在处理后端服务器中访问原始的完整请求参数。如果有一种方法可以使用 Traefik 收到的完整路径和查询向 Nginx 发送请求,那将是理想的。
tl;博士:
  • 我正在将请求路由到 Traefik 中的特定服务
  • 如果该请求为 404,我希望能够将该请求传递给 Nginx 以进行进一步处理/上下文错误页面
  • 我希望 Nginx 和/或接收 ErrorPage 重定向的页面能够知道服务中 404 的请求
  • 最佳答案

    不幸的是,这在 Traefik 中是不可能的。我试图实现类似的东西,但我意识到我们能够传递给错误页面的唯一信息是 HTTP 代码,就是这样。
    他们的文档中提到了唯一可用的选项:https://doc.traefik.io/traefik/middlewares/errorpages/

    关于traefik - 如何将带有参数的原始 URI 传递给 `query` 中指定的 Traefik ErrorPage 处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66211983/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com