Настройка HTTP-аутентификации Nginx в CentOS 7
Centos | Комментировать запись
Nginx – один из самых популярных веб-серверов.
Данное руководство поможет ограничить доступ к сайту, который поддерживается Nginx, при помощи базовой аутентификации HTTP.
Примечание: Такой метод аутентификации подразумевает наличие имени пользователя и (хэшированного) пароля.
Требования
- Сервер CentOS 7;
- Привилегии sudo;
- Заранее установленный сервер Nginx (инструкции по установке – здесь).
1: Установка инструментов HTTPD
Для настройки аутентификации необходима команда htpassword. Эта программа включена в пакет httpd-tools. Установите этот пакет:
sudo yum install -y httpd-tools
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/nginx.conf
Добавьте директивы в раздел server:
. . .
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
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: CentOS 7, HTTP, httpd, NGINX