Можливо, ви ніколи не замислювалися над тим, що Auth Basic, але ви, безумовно, з ним стикалися під час заходу в налаштування роутера. Саме так називають механізм авторизації за ім'ям користувача і паролем на рівні веб-сервера. Така авторизація підтримується і в Apache, і в Nginx. У цій інструкції пропонуємо розглянути таке питання, як налаштувати Auth Basic для конкретного маршруту або певного сайту.
Так виглядає вікно авторизації Auth Basic:
Тепер ви маєте розуміти, про що йтиметься в цій інструкції. Можливе налаштування авторизації для певного URL, для всього сайту або для всіх сайтів. Але насамперед слід створити файл зі списком користувачів і паролів. З цією метою ми будемо використовувати утиліту htpasswd. Синтаксис у команди такий:
$ sudo htpasswd -c /path/to/file username
У цьому разі опція -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-обробку, інакше користувачеві буде запропоновано можливість завантажити скрипт, до якого вони звертаються.
Таким чином, налаштувати доступ у Nginx не становить особливих труднощів. Необхідно лише правильно налаштувати блок location.