编辑访问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