BMitch,赔率很好,这的确是iptables规则的问题,而不是nginx-proxy的错误配置。
该表的默认链INPUT策略
filter为
DROP,并且未对
ACCEPT来自容器IP(127.20.XX)的请求制定任何规则。
因此,为了记录在案,我提供了一些其他人遇到相同问题时的情况的详细信息。
为了从外部访问容器,Docker在PREROUTING和FORWARD规则上设置了规则,以允许将外部IP从主机IP映射到容器IP。这些默认规则允许任何外部IP,这就是为什么限制对容器的访问需要一些高级iptables自定义的原因。
请参阅此链接以获取示例:http : //rudijs.github.io/2015-07/docker-
restricting-container-access-with-
iptables/
但是,如果您的容器需要访问主机资源(在主机上运行的服务,或者在我的情况下是侦听HTTP /
HTTPS主机端口并代理到容器的nginx代理容器),则需要注意容器中的iptables规则输入链。
实际上,来自容器并发给主机的请求将由Docker守护程序路由到主机网络堆栈, 但
随后需要传递INPUT链(因为请求
srcIP是主机的IP)。因此,如果您想保护主机资源并允许容器访问它们,请不要记得添加以下内容:
iptables -A INPUT -s 127.20.X.X/24 -j ACCEPT
其中127.20.XX / 24是运行容器的虚拟网络。
非常感谢您的帮助。



