Як налаштувати 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 /path/to/file username

У цьому разі опція -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

Для захисту певної адреси сторінки (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;
}

настройка Nginx

Якщо сайт на 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

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

Таким чином, налаштувати доступ у Nginx не становить особливих труднощів. Необхідно лише правильно налаштувати блок location.