Иногда возникает необходимость ограничить доступ к сайту или определенному его разделу на уровне HTTP. Для веб-сервера Apache доступ ограничивается через файл .htaccess, который размещается в корне сайта или раздела. http авторизация или auth basic в Nginx задается только непосредственно в конфигурационном файле.
Ограничение может быть необходимо для административной части сайта или служебным ресурсам, к которым нужен веб-доступ — например, таким как мониторинг.
При обращении через браузер к закрытому авторизацией ресурсу или разделу сайта будет запрашиваться логин и пароль.
auth basic в Nginx — как добавить HTTP авторизацию
Чтобы описанные ниже действия принесли результат сервер должен использовать в качестве веб-сервера программный пакет Nginx.
Проверить так ли это можно выполнив команду netstat -nltp | grep 80. В выводе должен быть процесс с именем nginx
Пример вывода на скриншоте:
Чтобы команда отработала в системе должен быть установлен пакет 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:
Проверяем конфигурацию Nginx
nginx -t
Даем команду на перечитывание конфигурационных файлов
nginx -s reload
На этом настройка auth basic в Nginx завершена. Сейчас при обращении к сайту будет открываться диалог, запрашивающий имя пользователя и пароль.
Запрос реквизитов доступа к ресурсу с ограничениями заданными через auth basic Nginx:
Любая попытка авторизоваться с неверными реквизитами или без них будет заканчиваться ошибкой 403.
Записи с таким же кодом ответа при этом будут появляться в логе доступа веб-сервера.
Читайте также про общую структура настроек Nignx, блоки конфигурации и контексты.