Ограничение доступа в NGINX

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

Оставьте ответ

Ваш адрес email не будет опубликован.