NGINX поддерживает базовую аутентификацию на уровне сервера. Для примера закроем паролем доступ к директории test, находящейся в корне сайта. Сначала устанавливаем пакет apache2-utils.
$ sudo apt-get install apache2-utils
Теперь создадим учётную запись для пользователя, которому разрешено будет посещать директорию test (ключ -c используется при первом выполнении команды для создания файла; в дальнейшем, при добавлении пользователей, он не нужен). Логин пользователя в примере — koobik.
$ htpasswd -c /etc/nginx/.htpassw koobik
New password:
Re-type new password:
Adding password for user koobik
Проверим, что в файле .htpassw появилась запись, содержащая логин и хэш пароля:
$ sudo cat /etc/nginx/.htpassw
koobik:$apr1$gX80M5YK$N2fbwFm/QualzIVQduK/g1
Теперь отредактируем конфигурацию nginx, добавив дополнительный блок location
$ sudo nano /etc/nginx/sites-available/default
...
location /test {
auth_basic "Enter your credentials";
auth_basic_user_file /etc/nginx/.htpassw;
}
...
Проверяем конфигурацию и перезапускаем nginx
$ nginx -t
$ service nginx reload
Теперь при обращении к директории test в браузере появится запрос логина и пароля.
В дальнейшем для добавления пользователя в .htpassw используйте команду
htpasswd /etc/nginx/.htpassw username
Для удаления пользователя достаточно удалить строку с его именем из .htpassw