Назад | Перейти на главную страницу

nginx auth_basic для адреса с определенным портом

У меня есть служба, работающая на порту 3000. Я успешно указал URL-адрес на адрес, используя следующую директиву nginx:

server {
  listen   80;
  server_name notes.mydomain.foo;

  location / {
    proxy_pass http://localhost:3000;
  }  
  auth_basic "Get lost!";
  auth_basic_user_file /etc/nginx/.htpasswd;
}

То есть когда кто-то идет в http://notes.mydomain.foo/, nginx успешно выполняет свою работу по обратному проксированию запроса на xxx.xxx.xxx.xxx:3000 и представляет пользователю базовый запрос аутентификации HTTP.

Однако, если я указываю браузеру прямо на xxx.xxx.xxx.xxx:3000, auth_basic игнорируется, и любой может получить доступ к контенту, который должен быть ограничен.

Как я могу включить auth_basic для общедоступного URL-адреса и адреса ip: port?

Если вы посетите свой сайт по адресу

http://xxx.xxx.xxx.xxx:80

вы увидите ответ auth_basic.

Службу, работающую на порте 3000, следует перенастроить, чтобы она не отображалась публично. Вместо этого он должен принимать соединения только от nginx. Это стандартный подход к прокси.

Для этого в конфигурации службы должен быть способ указать IP-адрес прослушивания, а также порт (3000). Измените или добавьте в конфигурацию, чтобы IP-адрес прослушивания был 127.0.0.1, и перезапустите службу.