Как настроить Auth Basic NGINX

14.03.2021, 22:14

Возможно, вы никогда не задумывались над тем, что Auth Basic, но вы определенно с ним сталкивались при заходе в настройки роутера. Именно так называют механизм авторизации по имени пользователя и паролю на уровне веб-сервера. Такая авторизация поддерживается и в Apache и в Nginx. В этой инструкции предлагаем рассмотреть такой вопрос, как настроить Auth Basic для конкретного маршрута или определенного сайта.

Настраиваем Auth Basic в NGINX

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

Окно авторизации Basic Auth

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

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

В этом случае опция -c используется для создания нового файла, для редактирования ранее созданных файлов пользоваться ей не нужно. К примеру:

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

Basic Auth

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

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

auth_basic "Restricted area";

auth_basic_user_file /etc/nginx/auth.basic;

настройка Nginx

Для защиты определенного адреса страницы (УРЛ) необходимо добавить директиву в соответствующий блок location. Это может быть /wp-admin/admin-ajax.php:

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

настройка Nginx

Если сайт на Вордпресс, то размещать 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

К блоку location необходимо будет добавить PHP-обработку, в противном случае пользователя будет предложена возможность скачать скрипт, к которому они обращаются. 

 

Таким образом, настроить доступ в Nginx не составляет особого труда. Необходимо всего правильно настроить блок location.