Обновяване на предпочитанията за бисквитки

Как да защитите каталога на сайта с парола с помощта на файл .htpasswd в Nginx

04 Jun 2025, 19:58:53
Уеб сървърът Nginx не използва .htaccess, както Apache, но все пак поддържа базова HTTP-аутентификация с помощта на файлове .htpasswd. Това е лесен начин да ограничите достъпа до разделите на сайта с помощта на потребителско име и парола.

Какво е .htpasswd?

.htpasswd — това е текстов файл, в който се съхраняват имената на потребителите и техните криптирани пароли. Този файл се използва за реализация на базова HTTP-аутентификация: когато потребителят се опитва да отвори защитена страница, браузърът изисква въвеждане на логин и парола. Ако въведените данни не съвпадат с записите в .htpasswd, достъпът ще бъде отказан.
20250605_O6iqKGh3

Създаване на файл .htpasswd

Най-лесният начин да създадете файл .htpasswd е да използвате утилита htpasswd, която е част от пакета Apache-utils или httpd-tools.
htpasswd -c /etc/nginx/.htpasswd admin
  • -c - създайте нов файл. Не използвайте този флаг, ако във файла вече има добавени потребители, в противен случай те ще бъдат презаписани;
  • /etc/nginx/.htpasswd - пътят към файла .htpasswd. За удобство го поставихме в каталога с конфигурации на Nginx;
  • admin - името на добавяния потребител.
Утилитата ще ви помоли да въведете парола за новия потребител и да я потвърдите.
20250604_kMzuDp0O
Съдържанието на файла е в най-прост вид:
име_на_потребителя:MD5-хеш_парола20250604_3nOppV7d
От това следва, че няма нужда да инсталирате специално пакети с утилитa htpasswd, ако на сървъра не се използва софтуер Apache.
Можем да създадем този файл самостоятелно, дори онлайн.

Създаване на файл .htpasswd без помощта на Apache утилити

За да създадем файл .htpasswd, можем да използваме помощта на утилита openssl. Това е удобен начин, особено ако не използвате Apache и работите само с Nginx. Ако на вашия сървър е инсталиран Nginx, тогава OpenSSL също трябва да е наличен. За да бъдем точни, самият файл ще създадем ръчно с командата:
echo "admin:" > /etc/nginx/.htpasswd
  • admin - име на потребителя;
  • /etc/nginx/.htpasswd - пътят до файла .htpasswd.
20250604_7CJQt3yP
С помощта на openssl генерираме хеш на паролата:
openssl passwd -apr1Въвеждаме и потвърждаваме паролата - в резултат получаваме готов хеш.
20250604_FnfTLLeI
След това ръчно копираме хеша, отваряме файла .htpasswd, например с помощта на редактора nano, и го поставяме в реда на потребителя, веднага след двоеточие (:).
20250604_IgZWny12
Запазваме промените с комбинацията от клавиши Ctrl + O и излизаме с Ctrl + X.

Настройка на Nginx за защита на папката на сайта

За да започнете, трябва да намерите конфигурационния файл на nginx, който съдържа блока server на вашия сайт. Това може да бъде както отделен файл, така и част от друг файл. В повечето случаи може да ви помогне утилита grep. Тя ще намери входовете на търсената фраза във файловете в зададената директория рекурсивно:
grep -rn "eurohoster.site" /etc/nginx
  • -r - рекурсивно търсене във всички вложени файлове и директории;
  • -n - извежда номера на реда на първото влизане на търсената фраза;
  • eurohoster.site - вашият домейн;
  • /etc/nginx - директория, в която да търсите.
В резултат ще получите списък с файлове, в които е намерен вашият домейн. Необходим ви е този, в който има директива server_name с вашия домейн.
20250604_eZg5E5d5
Отворете намерения конфигурационен файл, например с помощта на nano. Уверете се, че във файла има блок server с вашия домейн.
nano /etc/nginx/conf.d/eurohoster_site.conf
  • /etc/nginx/conf.d/eurohoster_site.conf - пътят до конфигурационния файл nginx на вашия домейн.
Примерно това изглежда така:
20250604_43fPzqBK
За да защитим конкретен каталог на сайта с парола, трябва да добавим само един блок 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 файла.
След добавянето на нов блок се получава подобно съдържание на конфигурационния файл:
20250604_FUacOURT
Запазваме файла с комбинацията от клавиши Ctrl + O и излизаме с Ctrl + X (ако използвате редактора nano).
Проверяваме конфигурацията на nginx за коректност:
nginx -tВ случай на отговор test is successful, рестартирайте уеб сървъра:
systemctl restart nginx20250604_ErTq2b23
В резултат ще видите желания прозорец за авторизация в браузъра:
20250605_O6iqKGh3
Подробно разгледахме процеса на защита на каталог (раздел) на сайта с парола с помощта на файл .htpasswd при използване на уеб сървър Nginx. Ако имате проблеми с този въпрос на нашите VPS и специализирани сървъри - винаги можете да се обърнете за помощ към техническата поддръжка в чата на сайта или чрез създаване на тикет.