使用`portainer`的`stack`部署容器的时候应该如何返回真实 IP ?
```docker-compose
version: '3'
services:
webdav:
image: ghcr.io/hacdias/webdav
container_name: webdav
restart: always
ports:
- "10001:6065"
volumes:
- /storage/docker_data/webdav/config.yml:/config.yml:ro
- /storage/docker_data/webdav/data:/data
command: -c /config.yml
```
- 使用 stack docker compose 部署容器的时候,docker 会自动生成一个以 stack 命名的网桥, 比如这个 stack 名叫 webdav
- 比如刚刚生成的容器就自己创建了一个自己的网桥,容器的 IP 地址是 172.19.0.2,网关是 172.19.0.1
Bridge:
| Name | Stack LT | Driver | Attachable | IPAM Driver | IPV4 IPAM Subnet | IPV4 IPAM Gateway |
| :------------: | :------: | :-----------------: | :--------: | :---------: | :-------------------------: | :---------------: |
| webdav_default | webdav | bridge | false | default | 172.19.0.0/16 | 172.19.0.1 |
```nginx
location / {
proxy_pass http://127.0.0.1:10001;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
```
- 用 nginx 进行反向代理的时候,我进入容器的后台发现
```log
2024-10-18T03:01:09.536Z INFO login attempt {"username": "aaaa", "remote_address": "172.19.0.1:57548"}
2024-10-18T03:01:09.536Z INFO user authorized {"username": "aaaa"}
2024-10-18T03:02:13.219Z INFO login attempt {"username": "aaaa", "remote_address": "172.19.0.1:56084"}
```
- 容器只能检测到它网关的信息,有老哥知道如何解决? 无法获得真正的 IP 地址
- 不仅仅是 webdav 其他的容器都是这样, 类似的还有 bitwarden 等等。。 |
|