【发布时间】:2022-11-28 06:29:42
【问题描述】:
使用以下设置:
只有 YARP 容器有发布的端口。它正确地设置了 X-Forward* 标头供其他容器使用。但不幸的是它是docker compose网关地址。
当我想记录(公共)客户端的 IP 地址时,我得到 ::ffff:172.18.0.1,这是 docker compose 网关 IP 地址。我需要以某种方式告诉 docker 将公共 IP 地址放在 X-Forward-For 标头中,然后我的反向代理将使用它。
我的容器在它们自己的网络中运行:
services:
yarp:
...
networks:
- mynet
我可以看到创建的网络:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2bf19f507987 dockercompose1502733..._mynet bridge local
并查看详细信息:
$ docker network inspect 2bf
[
{
"Name": "dockercompose1502733..._mynet",
"Id": "2bf...",
"Created": "...",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1" // this is the address I get for public requests
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"b82645911...": {
"Name": "YARP",
"EndpointID": "fb1b...",
"MacAddress": "02:42:ac:...",
"IPv4Address": "172.18.0.10/16",
"IPv6Address": ""
},
...
},
"Options": {},
"Labels": {
"com.docker.compose.network": "mynet",
"com.docker.compose.project": "dockercompose1502733...",
"com.docker.compose.version": "1.29.2"
}
}
]
【问题讨论】:
-
什么是 docker compose 网关?我在任何地方都找不到对此的引用。
-
澄清一下,您是说 HARP 将 X-Forwarded-For 标头设置为错误的值吗?
-
不,据我所知,YARP 工作正常。它从 docker 获取
::ffff:172.18.0.1IP 地址并将此值放入X-Forward-For供其他人使用。问题是我如何访问客户端的公共 IP 地址(在 docker-compose 网络中丢失)?
标签: docker docker-compose docker-networking ms-yarp