Как да конфигурираме 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), трябва да добавите директива към съответния блок за местоположение. Това може да бъде /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/. Всички правила, описани по-горе, ще работят, а освен това е осигурена защита. Ако трябва да разрешите достъпа за конкретно местоположение , директивата ще изглежда като 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 не е твърде трудна. Просто трябва да конфигурирате правилно блока за местоположение.