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