gpt4 book ai didi

reverse-proxy - traefik 可以重写重定向响应的位置 header 吗 (302)

转载 作者:行者123 更新时间:2023-12-04 04:23:24 28 4
gpt4 key购买 nike

我在某些服务前使用 traefik 2.0.2 作为反向代理。一个后端服务返回重定向响应 (302),其中位置 header 包含绝对重定向 url。后端的url从外部无法访问,如何重写位置以再次通过反向代理?

例如。客户请求 http://my-domain/foo并接收带有位置 header 的 302 响应,其中包含 http://backend:8080/foo/bar/ ,这当然行不通。

我正在寻找类似于 ProxyPassReverse 的东西apache mod_proxy。我已阅读可用的 middlewares traefik,但似乎没有什么符合我的要求。

我的简化配置:

# traefik.yml
entryPoints:
web:
address: ":80"

providers:
file:
filename: "dynamic-conf.yml"

# dynamic-conf.yml
http:
routers:
router1:
entryPoints:
- web
service: service1
rule: "PathPrefix(`/foo`)"
services:
service1
loadBalancer:
servers:
- url: http://backend:8080

最佳答案

我做了 不是 找到使用 traefik 重写服务响应的位置 header 的选项。
replaceResponseHeaders 的功能请求存在。

我的(临时)解决方案是使用 RedirectRegex 在 traefik 中执行重定向中间件,这样后端服务就不需要重定向响应。

更新后的配置如下所示:

# dynamic-conf.yml
http:
routers:
router1:
entryPoints:
- web
service: service1
rule: "PathPrefix(`/foo`)"
middlewares:
- my-redirect
middlewares:
my-redirect: # Workaround for service1 redirection
redirectRegex:
regex: "^https?://[^/]+/foo/?$"
replacement: "/foo/webapp/"
services:
service1
loadBalancer:
servers:
- url: http://backend:8080

关于reverse-proxy - traefik 可以重写重定向响应的位置 header 吗 (302),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58536983/

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