Site icon IT Draft

Пароль на файл/каталог вэб-сервера NGINX в Centos/Ubuntu

Пароль на файл/каталог вэб-сервера NGINX в Centos/Ubuntu

Рассмотрим процесс настройки доступа по паролю к каталогу или файлу на web-сервере NGINX на примере виртуальной машины от компании «Облакотека»

Для того, что бы сделать доступ по паролю в каталог вэб-сервера 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;
        }
Exit mobile version