Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nginx status page in Docker

Tags:

docker

nginx

I have a server which hosts several Docker containers including an Nginx reverse proxy to serve content. In order to get status of this server I have added the following location block:

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

Under normal circumstances I would only have opened up 127.0.0.1 but that means that the host machine would not have access (only the Nginx container itself would) so I opened up all of the 172 addresses. Is there a cleaner/more secure way of doing this or is my approach reasonable for a production environment?

like image 246
ken Avatar asked Jan 20 '26 11:01

ken


1 Answers

When docker starts it creates an interface docker0 that is an ethernet bridge, and assigns it an IP address. Docker tries to choose a smart default, and the 172.17.0.0/16 range is a good default. The host will route all traffic destined for that network to the docker0 bridge, and it's not accessible externally unless you've mapped a port.

In your question you've allowed 172.0.0.0/8, some of which is not RFC1918 private address space. You could restrict this further to either all of the addresses in the Docker network driver source I linked before, or simply 172.17.0.0/16 since that's the first in the list and is usually used.

like image 125
Ben Whaley Avatar answered Jan 22 '26 01:01

Ben Whaley