Главная >> Инструкции >> Настройка auth basic Nginx

Настройка auth basic Nginx

Даже если вы ещё не знаете что такое Basic Auth, вы наверняка уже с ней сталкивались, например, при входе в интерфейс настройки роутера. Это механизм авторизации по имени пользователя и паролю на уровне веб-сервера. Такая авторизация поддерживается и в Apache и в Nginx.

В этой статье мы разберемся как настроить Basic Auth Nginx, для определённого маршрута или для всего сайта.

Настройка Basic Auth в Nginx

Окно авторизации Basic Auth выглядит вот так:

Думаю теперь вы знаете о чём идёт речь. Такую авторизацию можно настроить для определённого URL, для всего сайта или для всех сайтов. Но сначала надо создать файл со списком пользователей и паролей. Для этого используется утилита htpasswd. Синтаксис у команды такой:

$ sudo htpasswd -c /путь/к/файлу имя_пользователя

Опция -c используется для создания нового файла, для редактирования уже существующих её использовать не надо. Например:

sudo htpasswd -c /etc/nginx/auth.basic admin

Утилита два раза спросит пароль. Пароль вводится но не отображается. Это так должно быть для безопасности. После того, как файл будет создан можно переходить к настройке Nginx.

Для того чтобы защитить паролем все ваши сайты просто добавьте эти директиву в секцию http файла /etc/nginx/nginx.conf:

auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/auth.basic;

Для защиты только определённой URL добавьте эти же директивы в нужный блок location. Например для /wp-admin/admin-ajax.php:

location /wp-admin/admin-ajax.php {
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/auth.basic;
}

Для WordPress такой location лучше размещать вложенным в location /. Тогда будут работать все правила описанные там, плюс ваше на защиту доступа. Если же наоборот надо разрешить доступ для определённого location то директива будут выглядеть так auth_basic "off". Например:

location /wp-admin/admin-ajax.php {
auth_basic "off";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}

Здесь разместить этот блок location вложенным уже не получиться, поэтому следует добавить в него обработку php иначе веб-сервер просто предложит пользователям скачать php скрипт, к которому они обращаются.

Выводы

Как видите, авторизация по паролю nginx настраивется не так уж сложно, надо только правильно сформулировать блок location. Если у вас остались вопросы, спрашивайте в комментариях!

Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

8 комментариев к “Настройка auth basic Nginx”

  1. Добрый день . Linux Mint 17.1 мне нравитСЯ с него начал изучать платформу . Скоро прийду к вам для этого мне бы помощь надо оказать) Если есть желающие поддержать пишите на почту или в телеграм . С Уважением за ваш труд Сергей Цабий . Открыт для общения как и Linux)

    Ответить
  2. А как исключить например директорию на сайте при авторизации по паролю, с учетом того, что веб-сервер работает только на Nginx?
    Есть варианты?

    Ответить

Оставьте комментарий