我们有一个包含几个docker容器的docker bridge.主docker是一个Nginx服务器,充当web主机并将所有数据转发给其他容器.@H_404_2@
现在要求连接仅限于指定的ip地址列表.为此,我编辑了Nginx服务器文件:@H_404_2@
@H_404_2@
server {
allow 127.0.0.0/8;
deny all;
...
哪个应该允许环回127.0.0.1连接.@H_404_2@
然而这失败了,看看access.log显示了原因:
所有行都以:@H_404_2@
@H_404_2@
172.25.0.1 - - [10/Apr/2018:08:22:46 +0000] "GET
172.25.0.1是docker bridge网关;因此,码头工人“忘记”外部的ips,我不能再过滤掉了.@H_404_2@
我怎样才能过滤ips?或者将源ips转发到docker?@H_404_2@
最佳答案
这是预期的,也是docker网络工作的方式.默认情况下,您最终会在docker主机上看到类似于虚拟网络的内容.从外部转发的连接将通过docker0和NAT到达每个容器.@H_404_2@
为了解决这个问题,简单的答案是在Nginx容器上使用主机网络.
即 – docker run命令的–network host选项.见:host networking@H_404_2@
另外,请阅读docker网络文档.在那里解释得更彻底.
https://docs.docker.com/network/