Защита директорий паролем в VestaCP Nginx + Apache

Иногда возникает необходимость защитить определенные директории паролем, чтобы кто попало не лазил с намерениями брутфорса паролей в админку и т.п.

Для этого и создан этот небольшой мануал:

cd /home/{user}/conf/web

если файл .htaccess отсутствует:

touch .htpasswd

Добавляем в файл .htaccess новую пару логин пароль:

htpasswd -b .htpasswd username password

 

Если система ругается на отсутствие команды htpasswd, установите apache2-utils:

apt-get install apache2-utils

 

Далее создаем конфиг нашей защищенной директории:

touch nginx.you_site.ru.conf_restricted

и записываем в него этот код:

location ^~ /administrator/ {
auth_basic "Restricted Area";
auth_basic_user_file /home/{user}/conf/web/.htpasswd;
proxy_pass http://XXX.XXX.XXX.XXX:8080;
}

где {user} - заменить на реальное имя пользователя,
XXX.XXX.XXX.XXX - IP адрес сервера, который слушает апач. (если ваш сервер работает без апача, эта строка не нужна)

 

Если на сайте используется https, нужно добавить еще один файл:

touch snginx.you_site.ru.conf_restricted
location ^~ /administrator/ {
auth_basic "Restricted Area";
auth_basic_user_file /home/{user}/conf/web/.htpasswd;
proxy_pass https://XXX.XXX.XXX.XXX:8443;
}

 

Рестартуем nginx:

service nginx restart