Рассмотрим процесс настройки доступа по паролю к каталогу или файлу на web-сервере NGINX на примере виртуальной машины от компании «Облакотека»
- Установка web-сервера NGINX для работы с виртуальными хостами, PHP-FPM в режиме работы Sock, Mysql-сервер MariaDB на Centos 7
- Пароль на файл/каталог вэб-сервера NGINX в Centos/Ubuntu
- Включаем SSL в NGINX на Centos 7
- Бесплатный SSL и Widacard SSL сертификат от Let’s Encrypt, подключение в NGINX и автообновление на Centos 7
Для того, что бы сделать доступ по паролю в каталог вэб-сервера NGINX для начала необходимо сгенерировать файл с логином/паролем .htpasswd
Это можно сделать с помощью утилиты от вэб-сервера Apache, либо про помощи php, либо с помощью bash.
Установим утилиту от вэб-сервера Apache:
Для Centos:
Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.
[root@localhost]# yum install httpd-tools
Для Ubuntu/Debian:
[root@localhost]# sudo apt-get install apache2-utils
Сгенерируем пароль:
[root@localhost]# htpasswd -c /var/www/example.ru/public_html/.htpasswd username
где:
/var/www/example.ru/public_html/ – путь к каталогу
username – имя пользователя, которое мы будем использовать для аутентификации
Сгенерируем пароль для файла .htpasswd при помощи php:
[root@localhost]# php -r 'echo crypt("your_password", "salt");'
где:
your_password - ваш пароль
salt - соль для пароля, должна содержать минимум 2 символа из набора “0-9 A-Z a-z”
Далее нам надо создать сам файл .htpasswd и вписать в него данные в формате:
username:password
где:
username – имя пользователя, которое мы будем использовать для аутентификации
password - наш сгенерированный пароль
Сгенерируем файл .htpasswd при помощи bash:
[root@localhost]# printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> /var/www/example.ru/public_html/.htpasswd
где:
USER – имя пользователя, которое мы будем использовать для аутентификации
PASSWORD - наш пароль
/var/www/example.ru/public_html/ - каталог, куда сохранится файл
Я использовал именно этот метод
Редактируем файл конфигурации NGINX, в данном случае нашего виртуального хоста
[root@localhost]# nano /etc/nginx/sites-available/example.ru.conf
. . .
location /test {
auth_basic "Password-protected Area";
auth_basic_user_file /etc/nginx/.htpasswd;
#autoindex on; # для режима просмотра файлов и директорий
}
Проверяем корректность настроек и перезапускаем иэб-сервер
[root@localhost]# nginx -t
[root@localhost]# service nginx restart
Например, что бы закрыть каталог wp-admin — в блоке server указываем:
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;
}