我正在尝试使用基本身份验证关闭端口(对于普罗米修斯的推送网关),所以不是 nginx 的大专家,所以有人可以给我和建议我哪里错了吗?
我有 9091 端口,应该在 auth 前面从外部关闭。此端口正在被 pushgateway 使用
我当前的 nginx 配置:
events { }
http {
upstream prometheus {
server 127.0.0.1:9090;
keepalive 64;
}
upstream pushgateway {
server 127.0.0.1:9091;
keepalive 64;
}
server {
root /var/www/example;
listen 0.0.0.0:80;
server_name __;
location / {
auth_basic "Prometheus server authentication2";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://prometheus;
}
}
server {
root /var/www/example;
listen 0.0.0.0:3001;
server_name __;
location / {
auth_basic "Pushgateway server authentication";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://pushgateway;
}
}
}
所以基本身份验证适用于:3001,但 9091 仍然打开。我试图改变它的下一个方式:
server {
root /var/www/example;
listen 0.0.0.0:3001;
listen 0.0.0.0:9091;
server_name __;
location / {
auth_basic "Pushgateway server authentication";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://pushgateway;
}
}
并且工作正常,但是...... pushgateway 无法开始尝试监听:9091 并抛出“bind:address is already in use”。我怎样才能避免它并将pushgateway隐藏在nginx前面?
Pushgatewa 的配置:
ExecStart=/usr/local/bin/pushgateway --web.listen-address=":9091" --web.telemetry-path="/metrics" --persistence.file="/tmp/metric.store" --persistence.interval=5m --log.level="info" --log.format="logger:stdout?json=true"
您当前的 nginx 配置非常适合此目的。
您需要更改 Pushgateway 配置,以便它侦听
127.0.0.1
而不是0.0.0.0
.如果找不到,则需要添加防火墙规则,阻止从 WAN 端到端口的流量。