Настройка HTTP-аутентификации на Nginx в Ubuntu
Ubuntu | Комментировать запись
Nginx – один из самых популярных веб-серверов.
Данное руководство поможет ограничить доступ к сайту, который поддерживается Nginx, при помощи базовой аутентификации HTTP.
Примечание: Такой метод аутентификации подразумевает наличие имени пользователя и (хэшированного) пароля.
Требования
- Сервер Ubuntu 14.04;
- Привилегии sudo;
- Заранее установленный сервер Nginx (инструкции по установке – здесь).
1: Установка инструментов Apache
Для настройки аутентификации необходима команда htpassword. Эта программа включена в пакет apache2-utils. Установите этот пакет:
sudo apt-get install apache2-utils
2: Создание учётных данных
Теперь нужно создать пароль.
Пароль и связанное с ним имя пользователя будут храниться в указанном вами файле. Пароль будет зашифрован. Файл можно назвать как угодно; в данном руководстве файл называется /etc/nginx/.htpasswd, имя пользователя – nginx.
Чтобы создать пароль, введите команду:
sudo htpasswd -c /etc/nginx/.htpasswd nginx
Проверьте содержимое нового файла; там появятся учётные данные.
cat /etc/nginx/.htpasswd
nginx:$apr1$ilgq7ZEO$OarDX15gjKAxuxzv0JTrO/
3: Обновление настроек Nginx
Итак, теперь у вас есть учётные данные; настройте Nginx для их поддержки.
За поддержку HTTP отвечают директивы auth_basic и auth_basic_user_file. Директива auth_basic должна содержать текст, который будет отображаться в форме аутентификации. Директива auth_basic_user_file задаёт путь к файлу паролей, созданному в разделе 2.
Добавьте эти директивы в конфигурационный файл целевого сайта (он, как правило, хранится в каталоге /etc/nginx/). Откройте файл при помощи текстового редактора:
sudo nano /etc/nginx/sites-available/default
Добавьте директивы в раздел location:
. . .
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
auth_basic "Private Property";
auth_basic_user_file /etc/nginx/.htpasswd;
}
. . .
Сохраните и закройте файл.
4: Тестирование аутентификации
Сначала нужно перезапустить Nginx:
sudo systemctl reload nginx
Теперь откройте сайт в браузере:
http://your_server_ip/
На экране должна появиться форма входа, содержащая текст, указанный в директиве auth_basic (в данном случае – Private Property). Введите вои учётные данные, чтобы получить доступ к сайту.
Заключение
Теперь вы умеете ограничивать доступ к сайту, размещенному на Nginx.
Более подробные инструкции можно найти в документации Nginx.
Tags: HTTP, NGINX