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