Nginx — это бесплатный веб-сервер с открытым исходным кодом, используемый для балансировки нагрузки, буферизации и кэширования. С момента своего создания в 2004 году Nginx завоевал популярность благодаря масштабированию веб-серверов и обратному проксированию. Благодаря высокой производительности и отличным возможностям обработки большого объема соединений он используется для управления и контроля входящего трафика.
Как работает HTTP-аутентификация?
При базовой HTTP-аутентификации, все маршруты на сервере заблокированы и требуют соответствующих учетных данных для аутентификации. Каждый раз, когда пользователь пытается получить доступ к защищенному ресурсу, сервер отправляет пользователю заголовок WWW-Authenticate и ответ 401 Unauthorized. Если имя пользователя и пароль, используемые пользователем, верны и совпадают с файлом ключей, соединение устанавливается, в противном случае в доступе отказывается.
В этом руководстве мы подробно рассмотрим шаги настройки базовой HTTP-аутентификации с помощью Nginx на Ubuntu 20.04.
Предварительные требования
Чтобы следовать этому руководству, вам понадобится следующее:
- Последняя версия установленной Ubuntu в вашей системе.
- Пользователи системы должны иметь привилегии sudo.
- Установленный и настроенный Nginx на вашем сервере.
Шаг 1. Обновление репозиториев программного обеспечения
Перед установкой любого нового программного обеспечения или пакета API в вашей системе обновите репозитории, чтобы избежать ошибок или конфликтов пакетов. Сначала мы обновим программное обеспечение с помощью sudo команды:
|
1 |
sudo apt-get update |
Теперь, когда мы обновили репозитории программного обеспечения, давайте установим необходимые apache2 пакеты.
Шаг 2. Установка необходимых пакетов
Поскольку мы настраиваем HTTP-аутентификацию для каталога, мы будем использовать команду htpasswd для создания зашифрованного пароля. Установите пакет apache2-utils с помощью следующей команды:
|
1 |
sudo apt-get install apache2-utils |
Шаг 3. Создание пользователя и пароля
На этом шаге мы настроим учетные данные базовой HTTP-аутентификации. В корневом каталоге создайте файл .htpasswd, связанный с пользователем. Пароль будет зашифрован, а имя файла может быть любым по вашему выбору. Используйте следующую команду, чтобы создать файл и добавить пользователя с зашифрованным паролем:
|
1 |
sudo htpasswd -c /etc/nginx/.htpasswd cloudsigma |

Затем проверьте только что созданный файл с помощью следующей команды:
|
1 |
cat /etc/nginx/.htpasswd |
Шаг 4. Обновление конфигурации Nginx
Как только у нас появятся учетные данные базовой HTTP-аутентификации, давайте настроим Nginx и будем использовать его на нашем целевом веб-сайте. Нам требуются директивы auth_basic и auth_basic_user_file для установления базовой HTTP-аутентификации. Значение директивы auth_basic представляет собой строковый формат, тогда как значением auth_basic_user_file является путь к файлу паролей, созданному на Шаге 3.
Важно включить эти две директивы в конфигурационный файл целевого веб-сайта. Вы найдете расположение целевого веб-сайта в каталоге /etc/nginx/sites-available. Откройте конфигурационный файл с помощью редактора nano:
|
1 |
sudo nano /etc/nginx/sites-available/default |
Затем добавьте обе эти директивы в раздел location:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
. . . server_name localhost; location / { # Сначала пытаемся обслужить запрос как файл, затем # как каталог, затем возвращаемся к отображению 404. try_files $uri $uri/ =404; # Раскомментируйте, чтобы включить naxsi для этого местоположения # include /etc/nginx/naxsi.rules auth_basic "Private Property"; auth_basic_user_file /etc/nginx/.htpasswd; } . . . |
After adding the directive, save and close the configuration file.
Шаг 5. Перезапуск Nginx
Затем перезагрузите или перезапустите службы Nginx, чтобы применить изменения на нашем виртуальном хосте. После этого мы попытаемся получить доступ к защищенному домену, используя нашу базовую аутентификацию HTTP. Используйте следующую команду для активации служб Nginx:
|
1 |
sudo service nginx reload |
Шаг 6: Безопасный веб-доступ
После перезапуска Nginx следующим шагом будет попытка получить доступ к IP-адресу или доменному имени в вашем любимом браузере. При нажатии на IP-адрес http://your_domain_name/ в вашем браузере откроется окно с запросом на ввод учетных данных для аутентификации. Как только вы введете правильное имя пользователя и пароль, вы увидите домашнюю страницу Nginx по умолчанию.
Заключение
В этом руководстве мы узнали, как настроить базовую аутентификацию HTTP в Nginx. Базовая аутентификация по имени пользователя/паролю — это лишь один из многих вариантов аутентификации для установления безопасного соединения в Nginx.
Существуют и другие мощные варианты, используемые для аутентификации сервера. Например, некоторые популярные методы, которые вы можете использовать, включают интеграцию API, JSON Web Tokens, аутентификацию на основе ключей SSH. Хотя получение надежных механизмов безопасности поначалу может показаться сложным, они очень эффективны для защиты вашей конфиденциальности.
Кроме того, есть много других учебных материалов и руководств по Nginx, к которым вы можете получить доступ из наших блогов:
- Обзор алгоритмов выбора блоков Server и Location в Nginx
- Установка и настройка Laravel с Nginx на Ubuntu 20.04
- Настройка Django с PostgreSQL, Nginx и Gunicorn на Ubuntu 20.04
Приятной работы!

Комментарии
Комментариев пока нет. Будьте первым.