Настройка HTTP-аутентификации на Nginx в 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: ,

Добавить комментарий