首页 > 解决方案 > 在 Docker 中使用 Traefik 的基本设置没有看到 X-Forwarded-For 中的真实 IP?

问题描述

爱上了 Traefik 在 youtube 上的演示,所以我一直在尝试设置它。我的 docker 服务器在 192.168.0.23 上。

即使从我的局域网(192.168.0.144)查询另一台主机时,我总是在 X-Forwarded-For ...

curl -H Host:whoami.docker.localhost http://192.168.0.23:8880

节目

Hostname: 20f76fbc038e
IP: 127.0.0.1
IP: 172.22.0.2
GET / HTTP/1.1
Host: whoami.docker.localhost
User-Agent: curl/7.51.0
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 172.22.0.1
X-Forwarded-Host: whoami.docker.localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: c40ba22259b6
X-Real-Ip: 172.22.0.1

通过公共 IP 从另一个网络调用时会发生同样的事情,仍然看到X-Forwarded-For: 172.22.0.1

我的 docker-compose 是基本示例之一...

version: '3'

services:
  reverse-proxy:
    image: traefik
    command: --api --docker
    ports:
      - "8880:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  whoami:
    image: containous/whoami
    labels:
      - "traefik.frontend.rule=Host:whoami.docker.localhost"
      - "traefik.frontend.passHostHeader=true"

我错过了什么吗?我希望至少在 X-Forwarded-For 列表中获得发起请求的主机的 IP,正如我在网络上看到的所有示例一样......

奇怪的是,在转发字段中显示的 IP 是 docker 网络中服务器的 IP,当 curl 是从服务器本身执行时才有意义,而不是从同一网络中的另一台主机或通过互联网执行...

标签: dockertraefik

解决方案


推荐阅读