2014-09-28 61 views
2

我有一台服务器,它承载了几个Docker容器,包括一个Nginx反向代理以提供内容。为了得到这台服务器的状态我加入以下位置块:Docker中的Nginx状态页面

location /nginx_status { 
    stub_status on; 
    access_log off; 
    allow  127.0.0.1; 
    allow  172.0.0.0/8; 
    deny  all; 
} 

在正常情况下,我只会已经打开了127.0.0.1,但是这意味着,主机将无法访问(仅Nginx的容器本身会),所以我打开了所有的172个地址。有没有更干净/更安全的方法来做到这一点,还是我的方法对于生产环境来说是合理的?

回答

2

当码头工人启动它creates an interface docker0 that is an ethernet bridge,并为其分配一个IP地址。 Docker tries to choose a smart default172.17.0.0/16范围是一个很好的默认值。主机会将目的地址为该网络的所有通信路由到docker0网桥,除非您已映射端口,否则它无法从外部访问。

在你的问题你允许172.0.0.0/8,其中一些不是RFC1918 private address space。您可以进一步限制为之前链接的Docker网络驱动程序源中的所有地址,或者仅限于172.17.0.0/16,因为这是列表中的第一个,并且通常是使用的。