Как поставить пароль на сайт или каталог в Nginx

  • 15.04.2019
  • 13 803
  • 0
  • 05.10.2024
  • 9
  • 9
  • 0
Как поставить пароль на сайт или каталог в Nginx

В статье описана настройка доступа по паролю, которая необходима в тех случаях, когда нужно закрыть паролем доступ ко всему сайту целиком или же к определенной его части. Например, доступ к каталогу с определенными материалами, phpmyadmin и так далее. Для достижения данного результата, необходимо в вебсервере nginx настроить базовую аутентификацию.

Создаем файл с паролями

С помощью openssl

На сегодняшний день openssl присутствует по умолчанию, наверное, в каждом дистрибутиве, по этому никакой дополнительной установки программного обеспечения вам не понадобится.
Выполняем команду, в которой указываем имя пользователя (в данном случае, для примера будет пользователь sysadmin):

sudo sh -c "echo -n 'sysadmin:' >> /etc/nginx/.htpasswd"

Затем, выполним команду, при помощи которой будет зашифрован пароль доступа:

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

После выполнения данной команды, нужно будет ввести желаемый пароль, после чего подтвердить его ввод повторно. После этого, в каталоге /etc/nginx будет создан файл .htpasswd, содержащий логин и хэш пароля.

С помощью htpasswd

Для этого, в дистрибутивах Debian, Ubuntu и их производных, устанавливаем пакет apache2-utils:

sudo apt-get install apache2-utils

В дистрибутивах, построенных на основе RHEL, CentOS и т. д. устанавливаем пакет httpd-tools:

sudo yum install httpd-tools

После чего, создаем файл с паролем .htpasswd:

Если у вас уже существует файл с таким именем, то его содержимое будет заменено, поэтому перед процедурой обязательно удостоверьтесь, что такого файла нет или используйте любое другое имя, которого точно нет.
sudo htpasswd -c /etc/nginx/.htpasswd sysadmin

/etc/nginx/.htpasswd - это путь к файлу авторизации
sysadmin - это имя пользователя
После ввода данной команды, вам нужно будет напечатать желаемый пароль в консоли и подтвердить его еще раз.
В результате будет создан файл .htpasswd содержащий в себе логин и хеш пароля (в нашем примере это пароль 12345). Вот его содержимое:

sysadmin:$apr1$OAhXelmi$Q7y4E4cYfB/ABQc.c9yhY/

С помощью онлайн инструментов

Если вы не хотите устанавливать дополнительный софт, то можно создать файл воспользовавшись онлайн сервисом, например этим:
http://www.htaccesstools.com/htpasswd-generator/
Вводим туда необходимые данные:

  • username - желаемое имя пользователя
  • password - желаемый пароль

И жмем кнопку Create .htpasswd file
В результате получаем аналогичную с предыдущим пунктом строку, содержащую в себе логин и хеш пароля. Далее необходимо создать файл /etc/nginx/.htpasswd и вставить в него эту строку, которую нам сформировал сайт.

Закрываем паролем доступ к определенному каталогу

Для того, чтобы закрыть доступ только к определенному каталогу сайта, необходимо в конфиг nginx (по умолчанию он находится в /etc/nginx/sites-available/default.conf), внести следующие строки:

location ^~ /phpMyAdmin {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;    
...        
}

После внесенных изменений, сохраняем файл и применяем новые для Nginx настройки командой:

sudo service nginx reload

Таким образом, при попытке обратиться к каталогу phpMyAdmin на вашем сайте, будет выведено сообщение "Restricted" и форма для ввода логина и пароля.

Закрываем паролем доступ к сайту целиком

Если же необходимо закрыть доступ к сайту целиком, чтобы посещать его могли только те, кто имеет логин и пароль, то необходимо внести следующие изменения в конфиг Nginx (по умолчанию он находится в /etc/nginx/sites-available/default.conf):

Если у вас уже есть настроенный сайт, то вносить данные изменения необходимо в секцию location /
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd; 
...           
}

После внесенных изменений, сохраняем файл и применяем новые для Nginx настройки командой:

sudo service nginx reload

После этого, при попытке открыть любую страницу вашего сайта, должно будет появиться окошко с надписью "Restricted" и формой для ввода логина и пароля.

Была ли эта статья Вам полезна?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.