Как поставить пароль на сайт или каталог в Nginx
- AJIekceu4
- 15.04.2019
- 13 803
- 0
- 05.10.2024
- 9
- 9
- 0
В статье описана настройка доступа по паролю, которая необходима в тех случаях, когда нужно закрыть паролем доступ ко всему сайту целиком или же к определенной его части. Например, доступ к каталогу с определенными материалами, 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" и формой для ввода логина и пароля.
Добавить комментарий