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

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


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

С помощью htpasswd

Для этого, устанавливаем следующий пакет:

sudo apt-get install apache2-utils

После чего, создаем файл с паролем .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" и формой для ввода логина и пароля.



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

Ваш e-mail не будет опубликован.

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