Рейтинг:0

Обратный прокси-сервер Nginx, когда порт уже используется?

флаг us

я пытаюсь закрыть порт с базовой аутентификацией (для pushgateway prometheus), поэтому не большой специалист в nginx, так что может кто-нибудь, пожалуйста, дайте мне совет, где я ошибаюсь?

У меня есть порт 9091, который должен быть закрыт снаружи перед авторизацией. Этот порт используется pushgateway

Моя текущая конфигурация nginx:

События { }
http {
вверх по течению Прометей {
      сервер 127.0.0.1:9090;
      поддержка активности 64;
}

upstream pushgateway {
      сервер 127.0.0.1:9091;
      поддержка активности 64;
}

сервер {
      корень /var/www/пример;
      слушать 0.0.0.0:80;
      имя сервера __;      
      место расположения / {
            auth_basic "Аутентификация сервера Prometheus2";
            auth_basic_user_file /etc/nginx/.htpasswd;
            прокси_пароль http://prometheus;
      }  
}


сервер {
      корень /var/www/пример;
      слушать 0.0.0.0:3001;          
      имя сервера __;      
      место расположения / {
            auth_basic "Аутентификация сервера Pushgateway";
            auth_basic_user_file /etc/nginx/.htpasswd;
            прокси_пароль http://pushgateway;
      } 
}
}

Таким образом, базовая аутентификация отлично работает для: 3001, но 9091 все еще открыт. Я попытался изменить его следующим образом:

   сервер {
      корень /var/www/пример;
      слушать 0.0.0.0:3001;
      слушать 0.0.0.0:9091;
      имя сервера __;      
      место расположения / {
            auth_basic "Аутентификация сервера Pushgateway";
            auth_basic_user_file /etc/nginx/.htpasswd;
            прокси_пароль http://pushgateway;
      } 
}

И работает нормально, но... pushgateway не может запуститься, так как пытается прослушать :9091 и выдает "bind:адрес уже используется". Как этого избежать и скрыть 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"
Рейтинг:1
флаг us

Ваша текущая конфигурация nginx подходит для этой цели.

Вам нужно изменить конфигурацию Pushgateway, чтобы он прослушивал 127.0.0.1 вместо 0.0.0.0.

Если вы не можете найти это, вам нужно добавить правило брандмауэра, которое блокирует трафик на порт со стороны WAN.

Nigrimmist avatar
флаг us
Спасибо за предложение. Это я попробовал первым. ExecStart=/usr/local/bin/pushgateway --web.listen-address="127.0.0.1:9091" --web.telemetry-path="/metrics" --persistence.file="/tmp/metric.store " --persistence.interval=5m --log.level="info" --log.format="logger:stdout?json=true", выполните то же самое
флаг us
Что означает `ss -lnpt | показать шлюз grep?
Nigrimmist avatar
флаг us
Это с прокомментированной строкой nginx с прослушиванием 9091: https://i.imgur.com/nA71xlt.png, с прослушиванием - ничего не показывает, так как pushgateway не может запуститься: https://i.imgur.com/2AMCyFs.png
флаг us
В вашем вопросе не должно быть второго фрагмента конфигурации. nginx не должен прослушивать этот порт.
Nigrimmist avatar
флаг us
Хорошо, но что мне нужно сделать, чтобы сделать этот порт недоступным для общего доступа?
флаг us
Я уже сказал, что делать. Вы используете только первую часть конфигурации в своем вопросе, а затем настраиваете Pushgateway для прослушивания только «127.0.0.1:9091». Таким образом, только Pushgateway прослушивает порт 9091, и, поскольку он привязан к локальному хосту, он недоступен извне.
Nigrimmist avatar
флаг us
Да... вы совершенно правы. Похоже, когда я тестировал 127.0.0.1:9091 - я неправильно перезапустил службу. перезагрузка всего узла исправила это. Большое спасибо, чувак.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.