estou tentando fechar a porta com autenticação básica (para pushgateway do prometheus), então não sou um grande especialista em nginx, então alguém poderia me dar um conselho onde estou errado?
Eu tenho a porta 9091, que deve ser fechada por fora na frente do auth. Esta porta está sendo usada pelo pushgateway
Minha configuração atual do 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;
}
}
}
Portanto, a autenticação básica funciona bem para :3001, mas 9091 ainda está aberto. Tentei mudar da seguinte forma:
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;
}
}
E funciona bem, mas ... o pushgateway não pode começar tentando ouvir :9091 e jogando "bind:address já está em uso". Como posso evitá-lo e ocultar o pushgateway na frente do nginx?
Configuração do 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"
Sua configuração atual do nginx é boa para essa finalidade.
Você precisa alterar sua configuração do Pushgateway para que ele ouça em
127.0.0.1
vez de0.0.0.0
.Se você não encontrar isso, precisará adicionar uma regra de firewall que bloqueie o tráfego para a porta do lado da WAN.