編輯訪問nginx的服務器位置,以特定的碼頭工人容器:塔倫的答案不正是我問。歐根的答案也是一個非常好的解決方案。我最終接受塔倫的答案是正確的,但是使用了歐根的答案。如果你有類似的問題並擔心其他容器訪問nginx狀態服務器,請使用Tarun的答案。如果你想堅持Docker的正常主機名方案,請使用Eugen's。限制爲「允許」指令
+++原始的問題+++
我有我建立與碼頭工人,組成一個應用程序。我正試圖通過DataDog集成監控。我使用DataDog的代理容器,到目前爲止一切正常。我試圖通過修改this tutorial來啓動並運行nginx監控。
我的應用程序在這樣的碼頭工人,撰寫文件中定義:
version: '2'
services:
flask:
restart: always
image: me/flask-app
command: /home/app/flask/start_app.sh
expose:
- "8080"
nginx:
restart: always
build: ./nginx
command: /runtime/start_nginx.sh
ports:
- "80:80"
- "443:443"
expose:
- "81"
volumes:
- app-static:/app-static:ro
links:
- flask:flask
datadog-agent:
image: me/datadog-agent
env_file: ./datadog-agent/dev.env
links:
- flask
- nginx
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /proc/mounts:/host/proc/mounts:ro
- /sys/fs/cgroup:/host/sys/fs/cgroup:ro
每本教程中,我添加了一個服務器塊nginx的,看起來像這樣:
server {
listen 81;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
隨着這個配置,我可以檢查nginx容器內的nginx狀態。到現在爲止還挺好。現在我想更改位置塊中的「allow」指令以允許僅訪問數據代理服務。但是,我不知道datadog-agent的IP。在配置訪問瓶uwsgi服務器,我可以用指令是這樣的:
location/{
uwsgi_pass: flask:8080;
}
但是這似乎並沒有工作了允許指示;如果我嘗試:
location /nginx_status {
...
allow datadog-agent;
...
}
我得到以下錯誤:
nginx: [emerg] invalid parameter "datadog-agent" in /etc/nginx/sites-enabled/nginx-status:8
我怎樣才能安全地暴露nginx的狀態,我的監測容器?
言之過早不可能。我正在研究一個可能的解決方案 –
您是否在尋找[autodiscovery](https://docs.datadoghq.com/guides/autodiscovery/)? – stephenlechner
@TarunLalwani太棒了 - 我會繼續檢查這個帖子。 – nrlakin