2014-09-28 41 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,因爲這是列表中的第一個,並且通常是使用的。