i am trying to close port with basic authentication (for pushgateway of prometheus), so not a big specialist in nginx, so could someone please give me and advice where i am is wrong?
I have 9091 port, that should be closed from outside in front of auth. This port is under use by pushgateway
My current nginx config :
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;
      } 
}
}
So basic authentication works fine for :3001, but 9091 still open. I tried to change it next way :
   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;
      } 
}
And works fine, but ... pushgateway can't start as  trying to listen :9091 and throwing "bind:address is already in use". How can i avoid it and hide pushgateway in front of nginx?
Pushgatewa's config :
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"