auth basic в Nginx, добавление HTTP авторизации


Иногда возникает необходимость ограничить доступ к сайту или определенному его разделу на уровне HTTP. Для веб-сервера Apache доступ ограничивается через файл .htaccess, который размещается в корне сайта или раздела.  http авторизация или auth basic в Nginx задается только непосредственно в конфигурационном файле.



Ограничение может быть необходимо для административной части сайта или служебным ресурсам, к которым нужен веб-доступ — например, таким как мониторинг.


При обращении через браузер к закрытому авторизацией ресурсу или разделу сайта будет запрашиваться логин и пароль.



auth basic в Nginx — как добавить HTTP авторизацию


Чтобы описанные ниже действия принесли результат сервер должен использовать в качестве веб-сервера программный пакет Nginx.



Проверить так ли это можно выполнив команду netstat -nltp | grep 80. В выводе должен быть процесс с именем nginx



Пример вывода на скриншоте:

nginx на порту 80


Чтобы команда отработала в системе должен быть установлен пакет net-tools



Создаем файл указывая путь к нему и имя пользователя вместо USERNAME

htpasswd -c /etc/nginx/htpasswd.users USERNAME




После выполнения команды возникнет диалог с запросом пароля.

! Пароль будет зашифрован, в виде открытого текста просмотреть его будет нельзя. При необходимости можно поменять.




Теперь осталось указать в конфигурационном файле веб-сервера, что нужно использовать созданный только что файл для определенного виртуального хоста — пусть это будет хост, существующий по умолчанию.

В качестве имени сайта в примере используется azazasite.com.



В реальной среде нужно найти блок server для доменного имени и добавить 2 строки начинающиеся с auth_basic туда.

Если сайт также работает по https и для https есть отдельный конфигурационный файл — нужно добавить блок и в него.



mcedit /etc/nginx/sites-available/default

server {
listen 80;
server_name azazasite.com;
auth_basic 'Restricted Access';
auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
..}
}



Директивы auth_basic добавленные в блок server:

Директивы auth_basic добавленные  в блок конфигурации


Проверяем конфигурацию Nginx

nginx -t



Даем команду на перечитывание конфигурационных файлов

nginx -s reload



На этом настройка auth basic в Nginx завершена. Сейчас при обращении к сайту будет открываться диалог, запрашивающий имя пользователя и пароль.



Запрос реквизитов доступа к ресурсу с ограничениями заданными через auth basic Nginx:

auth basic в Nginx



Любая попытка авторизоваться с неверными реквизитами или без них будет заканчиваться ошибкой 403.

Записи с таким же кодом ответа при этом будут появляться в логе доступа веб-сервера.



Читайте также про общую структура настроек Nignx, блоки конфигурации и контексты.

Сказать спасибо