Пароль на файл/каталог вэб-сервера Nginx в Centos/Ubuntu
.htpasswd - это файл, используемый для хранения паролей пользователей в системе аутентификации HTTP на веб-сервере Apache. В этом файле хранятся учетные данные пользователей, разделенные на отдельные строки, каждая из которых содержит имя пользователя и пароль, разделенные символом двоеточия (:).
Для того, что бы сделать доступ по паролю в каталог вэб-сервера Nginx для начала необходимо сгенерировать файл с логином/паролем .htpasswd
Это можно сделать с помощью утилиты от вэб-сервера Apache, либо про помощи PHP, либо с помощью Bash.
Установим утилиту от вэб-сервера Apache:
Для Centos:
1
$ sudo yum install httpd-tools
Для Ubuntu/Debian:
1
$ sudo apt-get install apache2-utils
Сгенерируем пароль:
1
$ sudo htpasswd -c /var/www/example.ru/public_html/.htpasswd username
где:
/var/www/example.ru/public_html/
– путь к каталогуusername
– имя пользователя, которое мы будем использовать для аутентификации
Сгенерируем пароль для файла .htpasswd
при помощи PHP:
1
$ php -r 'echo crypt("your_password", "salt");'
где:
your_password
- ваш парольsalt
- соль для пароля, должна содержать минимум 2 символа из набора0-9 A-Z a-z
Далее нам надо создать сам файл .htpasswd
и вписать в него данные в формате:
1
username:password
где:
username
– имя пользователя, которое мы будем использовать для аутентификацииpassword
- наш сгенерированный пароль
Сгенерируем файл .htpasswd
при помощи Bash:
1
$ printf "USER:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /var/www/example.ru/public_html/.htpasswd
где:
USER
– имя пользователя, которое мы будем использовать для аутентификацииPASSWORD
- наш пароль/var/www/example.ru/public_html/
- каталог, куда сохранится файл
Я использовал именно этот метод
Редактируем файл конфигурации Nginx, в данном случае нашего виртуального хоста
1
2
3
4
5
6
7
$ sudo nano /etc/nginx/sites-available/example.ru.conf
. . .
location /test {
auth_basic "Password-protected Area";
auth_basic_user_file /etc/nginx/.htpasswd;
#autoindex on; # для режима просмотра файлов и директорий
}
Проверяем корректность настроек и перезапускаем Web-сервер
1
2
$ nginx -t
$ sudo service nginx restart
Например, что бы закрыть каталог wp-admin
, в блоке server
указываем
1
2
3
4
5
6
7
8
location = /wp-login.php {
auth_basic "Restricted";
auth_basic_user_file /var/www/example.ru/public_html/.htpasswd;
include fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}