pau*_*l23 6 nginx ip-forwarding docker
我们有一个包含多个 docker 容器的 docker 桥接器。主要的 docker 是一个 nginx 服务器,它充当网络主机并将所有数据转发到其他容器。
现在的要求是连接仅限于指定的 IP 地址列表。为此,我编辑了 nginx 服务器文件:
server {
allow 127.0.0.0/8;
deny all;
...
Run Code Online (Sandbox Code Playgroud)
这应该允许环回 127.0.0.1 连接。
然而,这失败了,查看 access.log 显示了原因:所有行都以:
172.25.0.1 - - [10/Apr/2018:08:22:46 +0000] "GET
Run Code Online (Sandbox Code Playgroud)
172.25.0.1是docker bridge网络网关;因此,码头工人“忘记”了外部 ip,我无法再对其进行过滤。
如何过滤ips?或者将源ips转发给docker?
这是预期的,也是 docker 网络的工作方式。默认情况下,您最终会在 docker 主机上得到类似于虚拟网络的东西。从外部转发的连接将通过 docker0 和 NAT 到达每个容器。
为了克服这个问题,简单的答案是在 nginx 容器上使用主机网络。--network host即命令选项 docker run。请参阅:主机网络
另外,请通读 docker 网络文档。那里解释得更彻底。 https://docs.docker.com/network/
| 归档时间: |
|
| 查看次数: |
1957 次 |
| 最近记录: |