Настройка HTTP-аутентификации в Nginx
Чтобы настроить веб-аутентификацию в Nginx нужно сделать всего пару вещей:
- Установить пакет apache2-utils
В Ubuntu это делается довольно просто:
apt-get install apache2-utils -y
- Создать файл с пользователями и паролями
# С указанием имени пользователя:
htpasswd -c /etc/nginx/.htpasswd username
# Или использовать имя пользователя, из-под которого вы работаете:
htpasswd -c /etc/nginx/.htpasswd
Для безопасности, лучше сразу установить права и владельца для этого файла:
sudo chmod 640 /etc/nginx/.htpasswd
sudo chown root:www-data /etc/nginx/.htpasswd
- Настроить Nginx
server {
# ...
location / {
# Сама аутентификация: заголовок запроса пароля и файл с доступным УЗ
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
# А дальше - произвольная конфигурация location
}
# ...
}
Обратите внимание: аутентификация работает только на конкретный location (и все, что за ним), а не на весь возможный пул
После всех манипуляций, нужно перезапустить Nginx:
nginx -t && nginx -s reload
При переходе на эндпоинт /protected (и все, что находится за ним), вам будет предложено ввести логин и пароль, который вы сгенерировали ранее
Опционально, вы можете отключить аутентификацию для каких-то вложенных путей:
# ...
# Здесь есть аутентификация
location / {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
# ...
}
# А эта часть - без аутентификации
location /public-page {
auth_basic off;
# ...
}
# ...