Nginx

埠已在使用時的Nginx反向代理?

  • February 17, 2022

我正在嘗試使用基本身份驗證關閉埠(對於普羅米修斯的推送網關),所以不是 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 端到埠的流量。

引用自:https://serverfault.com/questions/1094006