Устанавливаем пароль на сайт под управлением Nginx используя OpenSSL

Для защиты паролем веб-каталога или страницы сайта, нужно создать файл, в которым будет имя пользователя и его пароль. Сделать это можно с помощью утилит OpenSSL.

В Linux Gentoo Nginx необходимо собрать с модулем auth_basic, его необходимо указать в файле /etc/portage/make.conf:

NGINX_MODULES_HTTP="auth_basic"

Создадим пользователя, например, stepa:

linux # sh -c "echo -n 'stepa:' >> /var/www/.htpasswd"

Добавим пароль к созданному пользователю:

linux # sh -c "openssl passwd -apr1 >> /var/www/.htpasswd"

Посмотреть, что получилось:

linux # cat /var/www/.htpasswd

Защитить паролем только определённый файл (/admin/control.php):

location = /admin/control.php {
	auth_basic "Administrator Login";
	auth_basic_user_file /var/www/.htpasswd;
}

Защитить паролем весь каталог сайта (/admin/):

location /admin/ {
	auth_basic "Administrator Login";
	auth_basic_user_file /var/www/.htpasswd;
}

По возможности файл .htpasswd лучше положить в каталог, недоступный через WWW. Если это невозможно, следует запретить к нему доступ:

location =/.htpasswd {
    deny all;
}

Чтобы директива deny стала доступна, в Gentoo необходимо собрать Nginx с модулем access. Укажите его (или добавьте) в файле /etc/portage/make.conf:

NGINX_MODULES_HTTP="access"

Перегружаем Nginx:

Gentoo ~ # rc-service nginx reload