У меня есть служба, работающая на порту 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?
Если вы посетите свой сайт по адресу
вы увидите ответ auth_basic.
Службу, работающую на порте 3000, следует перенастроить, чтобы она не отображалась публично. Вместо этого он должен принимать соединения только от nginx. Это стандартный подход к прокси.
Для этого в конфигурации службы должен быть способ указать IP-адрес прослушивания, а также порт (3000). Измените или добавьте в конфигурацию, чтобы IP-адрес прослушивания был 127.0.0.1, и перезапустите службу.