Как настроить аутентификацию по паролю с помощью Nginx в Rocky Linux 9
Введение
При настройке веб-сервера часто есть разделы сайта, к которым вы хотите ограничить доступ. Веб-приложения часто предоставляют свои собственные методы аутентификации и авторизации, но сам веб-сервер может использоваться для ограничения доступа, если они неадекватны или недоступны. В этом руководстве вы защитите паролем ресурсы на веб-сервере Nginx, работающем на Rocky Linux 9.
Предпосылки
Для начала вам понадобится:
- Доступ к серверной среде Rocky Linux 9 от пользователя без полномочий root с привилегиями
sudo
для выполнения административных задач. Чтобы узнать, как создать такого пользователя, следуйте руководству по первоначальной настройке сервера Rocky Linux 9. - Nginx установлен в вашей системе, следуя шагам 1 и 2 этого руководства по установке Nginx в Rocky Linux 9.
Шаг 1 — Создание файла паролей
Для начала вам нужно создать файл, в котором будут храниться ваши комбинации имени пользователя и пароля. Вы можете сделать это с помощью утилит OpenSSL, которые уже должны быть доступны на вашем сервере.
Если на вашем сервере установлен OpenSSL, вы можете создать файл паролей без дополнительных пакетов. Вы создадите скрытый файл с именем .htpasswd
в каталоге конфигурации /etc/nginx
для хранения комбинаций имени пользователя и пароля.
Вы можете добавить имя пользователя в файл с помощью этой команды. sammy
используется здесь как имя пользователя, но вы можете использовать любое другое имя:
- sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"
Затем добавьте зашифрованный пароль для имени пользователя, набрав:
- sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
Вы можете повторить этот процесс для дополнительных имен пользователей. Вы можете увидеть, как имена пользователей и зашифрованные пароли хранятся в файле, набрав:
- cat /etc/nginx/.htpasswd
Outputsammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1
Шаг 2 — Настройка аутентификации по паролю Nginx
Теперь, когда у вас есть файл с вашими пользователями и паролями в формате, который может прочитать Nginx, вам нужно настроить Nginx для проверки этого файла перед обслуживанием вашего защищенного контента.
Текстовый редактор по умолчанию, поставляемый с Rocky Linux 9, называется vi
. vi
— чрезвычайно мощный текстовый редактор, но он может быть несколько бестолковым для пользователей, не имеющих опыта работы с ним. Возможно, вы захотите установить более удобный редактор, такой как nano
, чтобы упростить редактирование файлов конфигурации на вашем сервере Rocky Linux 9:
- sudo dnf install nano -y
Теперь вы можете использовать nano
для редактирования файла конфигурации Nginx:
- sudo nano /etc/nginx/nginx.conf
Чтобы настроить аутентификацию, вам нужно выбрать контекст для ограничения. Помимо прочего, Nginx позволяет вам устанавливать ограничения на уровне сервера или внутри определенного места.
Этот пример относится к ограничению на уровне сервера, поэтому вы добавите параметры в основной блок server{ }
в файле. Директива auth_basic
включает аутентификацию и имя области, которое будет отображаться пользователю при запросе учетных данных. Вы будете использовать директиву auth_basic_user_file
, чтобы указать Nginx на созданный вами файл паролей:
. . .
server {
listen 80 default_server;
listen [::]:80 default_server;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
. . .
}
. . .
Примечание. В зависимости от того, в каком блоке вы размещаете ограничения, вы можете контролировать детализацию того, какие части вашего сайта требуют пароля. Этот альтернативный пример ограничивает только корень документа блоком местоположения, и вы даже можете изменить этот список, чтобы указать только конкретный каталог в веб-пространстве:
…
server {
listen 80 default_server;
. . .
location / {
try_files $uri $uri/ =404;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
…
Сохраните и закройте файл, когда закончите. Перезапустите Nginx, чтобы применить политику паролей:
- sudo systemctl restart nginx
Указанный вами каталог теперь должен быть защищен паролем.
Шаг 3 — Подтверждение аутентификации пароля
Чтобы убедиться, что ваш контент защищен, попробуйте получить доступ к контенту с ограниченным доступом в веб-браузере:
http://server_domain_or_IP
Вам должно быть представлено приглашение имени пользователя и пароля:
Если вы введете правильные учетные данные, вам будет разрешен доступ к содержимому. Если вы введете неправильные учетные данные или нажмете «Отмена», вы увидите страницу с ошибкой «Требуется авторизация»:
Заключение
Теперь у вас должно быть все необходимое для настройки базовой аутентификации для вашего сайта. Имейте в виду, что защита паролем должна сочетаться с шифрованием TLS, чтобы ваши учетные данные не отправлялись на сервер в виде простого текста. Ознакомьтесь с этим руководством о том, как защитить Nginx с помощью Let’s Encrypt в Rocky Linux 9.