我在使用docker swarm时遇到问题,我有一个作为反向代理工作的nginx堆栈,并且基于显示不同网站的域。该堆栈具有2个副本,而所有其他堆栈(php / nginx)仅有1个副本。我发现的问题是我无法从这些堆栈中的任何一个获取客户端ip,记录入口堆栈时我只会得到10.xx.xx.xx而不是正确的ip。
实际上,入口的docker-compose就像这样:
ports:
- 80:80
- 443:443
deploy:
replicas: 2
update_config:
parallelism: 1
delay: 10s
restart_policy:
condition: any
仅当执行以下操作时,我才能获得正确的IP:
ports:
- target: 443
published: 443
mode: host
protocol: tcp
- target: 80
published: 80
mode: host
protocol: tcp
deploy:
replicas: 2
update_config:
parallelism: 1
delay: 10s
restart_policy:
condition: any
,但是这种情况下的问题是该副本无法正常工作,因为我只有1个副本,第二个抛出此错误:
no suitable node (host-mode port already in use on 1 node)
有什么建议吗?