traefik - 防止traefik转发客户端IP
问题描述
我使用 traefik 作为我的 Docker 主机的反向代理。此外,我想为外部服务器设置一个静态代理。这是我目前的配置:
defaultEntryPoints = ["http", "https"]
debug = false
logLevel = "ERROR"
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
compress = true
[entryPoints.https.tls]
[api]
[docker]
domain = "myhost.com"
watch = true
exposedByDefault = false
[file]
[backends]
[backends.otherhost]
[backends.otherhost.servers]
[backends.otherhost.servers.server0]
url = "http://otherhost.com"
[frontends]
[frontends.otherhost]
entryPoints = ["http", "https"]
backend = "otherhost"
[frontends.otherhost.routes]
[frontends.otherhost.routes.route0]
rule = "Host:subdomain.myhost.com"
[frontends.otherhost.headers.customRequestHeaders]
X-Forwarded-For = "foo"
X-Real-Ip = "foo"
将标题设置为空字符串什么也没做。有了这些设置,只是X-Real-Ip
变成了. 我可以防止 traefik 将客户端 IP 泄漏到外部后端,同时仍将其保留在我的 Docker 环境中吗?foo
X-Forwarded-For
foo, <my real IP>
解决方案
Traefik 2.x
使用中间件覆盖标头怎么样X-Forwarded-For
。在此处找到的文档。
[http.middlewares]
[http.middlewares.testHeader.headers]
[http.middlewares.testHeader.headers.customRequestHeaders]
X-Forwarded-For = "foo"
[http.middlewares.testHeader.headers.customResponseHeaders]
X-Forwarded-For = "foo"
然后,您可以将特定的中间件应用于您的路由器,如下所示:
[http.routers]
[http.routers.router1]
service = "myService"
middlewares = ["testHeader"]
rule = "Host(`example.com`)"
[http.middlewares]
[http.middlewares.testHeader.headers]
[http.middlewares.testHeader.headers.customRequestHeaders]
X-Forwarded-For = "foo"
[http.middlewares.testHeader.headers.customResponseHeaders]
X-Forwarded-For = "foo"
[http.services]
[http.services.service1]
[http.services.service1.loadBalancer]
[[http.services.service1.loadBalancer.servers]]
url = "http://127.0.0.1:80"
参考:
推荐阅读
- azure-web-app-service - 为什么我的新 Azure Web 服务没有在 packages.config 文件中安装 nuget 包?
- php - 使用 CakePHP 对会员或非会员进行年龄验证
- c - 在 C 中操作字符串的两种方法有什么区别?
- pdf - 有什么办法可以在线查看PDF图层
- c++ - 什么时候 std::is_convertible_v
是假的? - tensorflow - 我正在用flask部署接口,接口的内容是深度学习模型,请问如何实现热部署?
- python - 当我尝试预测不同的周期数时,时间序列中的 RMSE 值是否可能不同?
- javascript - 在导航栏中移动按钮,最佳实践?
- c# - c# 应用程序在调试下工作,但在发布模式下不工作
- php - 如何将元素附加到表单