Как да защитите каталога на сайта с парола с помощта на файл .htpasswd в Nginx
04 Jun 2025, 19:58:53
Уеб сървърът Nginx не използва .htaccess, както Apache, но все пак поддържа базова HTTP-аутентификация с помощта на файлове .htpasswd. Това е лесен начин да ограничите достъпа до разделите на сайта с помощта на потребителско име и парола.Какво е .htpasswd?
.htpasswd — това е текстов файл, в който се съхраняват имената на потребителите и техните криптирани пароли. Този файл се използва за реализация на базова HTTP-аутентификация: когато потребителят се опитва да отвори защитена страница, браузърът изисква въвеждане на логин и парола. Ако въведените данни не съвпадат с записите в .htpasswd, достъпът ще бъде отказан.
Създаване на файл .htpasswd
Най-лесният начин да създадете файл .htpasswd е да използвате утилита htpasswd, която е част от пакета Apache-utils или httpd-tools.htpasswd -c /etc/nginx/.htpasswd admin- -c - създайте нов файл. Не използвайте този флаг, ако във файла вече има добавени потребители, в противен случай те ще бъдат презаписани;
- /etc/nginx/.htpasswd - пътят към файла .htpasswd. За удобство го поставихме в каталога с конфигурации на Nginx;
- admin - името на добавяния потребител.

Съдържанието на файла е в най-прост вид:
име_на_потребителя:MD5-хеш_парола
От това следва, че няма нужда да инсталирате специално пакети с утилитa htpasswd, ако на сървъра не се използва софтуер Apache.
Можем да създадем този файл самостоятелно, дори онлайн.
Създаване на файл .htpasswd без помощта на Apache утилити
За да създадем файл .htpasswd, можем да използваме помощта на утилита openssl. Това е удобен начин, особено ако не използвате Apache и работите само с Nginx. Ако на вашия сървър е инсталиран Nginx, тогава OpenSSL също трябва да е наличен. За да бъдем точни, самият файл ще създадем ръчно с командата:echo "admin:" > /etc/nginx/.htpasswd- admin - име на потребителя;
- /etc/nginx/.htpasswd - пътят до файла .htpasswd.

С помощта на openssl генерираме хеш на паролата:
openssl passwd -apr1Въвеждаме и потвърждаваме паролата - в резултат получаваме готов хеш.
След това ръчно копираме хеша, отваряме файла .htpasswd, например с помощта на редактора nano, и го поставяме в реда на потребителя, веднага след двоеточие (:).

Запазваме промените с комбинацията от клавиши Ctrl + O и излизаме с Ctrl + X.
Настройка на Nginx за защита на папката на сайта
За да започнете, трябва да намерите конфигурационния файл на nginx, който съдържа блока server на вашия сайт. Това може да бъде както отделен файл, така и част от друг файл. В повечето случаи може да ви помогне утилита grep. Тя ще намери входовете на търсената фраза във файловете в зададената директория рекурсивно:grep -rn "eurohoster.site" /etc/nginx- -r - рекурсивно търсене във всички вложени файлове и директории;
- -n - извежда номера на реда на първото влизане на търсената фраза;
- eurohoster.site - вашият домейн;
- /etc/nginx - директория, в която да търсите.

Отворете намерения конфигурационен файл, например с помощта на nano. Уверете се, че във файла има блок server с вашия домейн.
nano /etc/nginx/conf.d/eurohoster_site.conf- /etc/nginx/conf.d/eurohoster_site.conf - пътят до конфигурационния файл nginx на вашия домейн.

За да защитим конкретен каталог на сайта с парола, трябва да добавим само един блок location, преди основния location (location /):
location /admin/ {
auth_basic "Closed";
auth_basic_user_file /etc/nginx/.htpasswd;
}
- /admin/ - URL с ограничен достъп. В примера - http://eurohoster.site/admin/;
- auth_basic "Closed" - включва проверка на потребителя и парола по протокол HTTP Basic Authentication. Извежда посоченото съобщение във форма;
- /etc/nginx/.htpasswd - пътят до .htpasswd файла.

Запазваме файла с комбинацията от клавиши Ctrl + O и излизаме с Ctrl + X (ако използвате редактора nano).
Проверяваме конфигурацията на nginx за коректност:
nginx -tВ случай на отговор test is successful, рестартирайте уеб сървъра:systemctl restart nginx
В резултат ще видите желания прозорец за авторизация в браузъра:

Подробно разгледахме процеса на защита на каталог (раздел) на сайта с парола с помощта на файл .htpasswd при използване на уеб сървър Nginx. Ако имате проблеми с този въпрос на нашите VPS и специализирани сървъри - винаги можете да се обърнете за помощ към техническата поддръжка в чата на сайта или чрез създаване на тикет.