Базовая аутентификация в Nginx (htpasswd)

Базовая аутентификация в Nginx (Basic Auth)

Руководство по защите веб-ресурсов или проксируемых путей с помощью связки логин-пароль, используя утилиту htpasswd.

Часть 1: Установка пакетов и генерация пароля

Для создания файла с хешированными паролями нам понадобится утилита htpasswd, которая поставляется вместе с пакетом apache2-utils.

Copy

apt-get update && apt-get install -y apache2-htpasswd

Создайте файл .htpasswd с нужным пользователем и паролем (флаг -b позволяет передать пароль в команде, флаг -c создает новый файл):

Copy

htpasswd -bc /etc/nginx/.htpasswd имя_пользователя 'ваш_пароль'

Файл будет сохранен по пути /etc/nginx/.htpasswd. Пароль внутри файла хранится в зашифрованном виде.

Часть 2: Настройка конфигурации Nginx

Откройте файл конфигурации вашего сайта (прокси или обычного виртуального хоста):

Copy

vim /etc/nginx/sites-available.d/имя_конфига.conf

В блоке server найдите блок location, который вы хотите защитить (например, location /), и добавьте в него директивы аутентификации.

Пример конфигурации:

Copy

server {
    server_name ваш_домен;

    # ... другие настройки (listen и т.д.) ...

    location / {
        # ... ваши текущие настройки (например proxy_pass) ...

        # Включить аутентификацию и задать отображаемый текст в окне браузера
        auth_basic "Restricted Access";
        
        # Указать абсолютный путь к файлу с данными логин/пароль
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

Часть 3: Применение настроек и проверка

Чтобы Nginx применил новые правила, перезагрузите его конфигурацию (без остановки текущих соединений):

Copy

systemctl reload nginx

Проверка работы:

Откройте браузер и перейдите по адресу вашего защищенного ресурса:

Copy

http://ваш_домен

Браузер должен запросить имя пользователя и пароль. Если вы введете данные, указанные на этапе генерации (имя_пользователя и ваш_пароль), доступ к ресурсу будет разрешен.