это очень простой вопрос, но мне не удалось найти никакой документации о том, как его настроить. У меня есть базовая настройка личного веб-сервера nginx, которая в значительной степени не отличается от стандартной. Я хотел бы разместить страницу, использующую базу данных, которую я хотел бы скрыть. Как лучше всего настроить личный каталог для хранения конфиденциальной информации: либо личный подкаталог для этой страницы, либо более широкий каталог за пределами общедоступного хостинга.
Вы можете заставить подкаталог требовать имя пользователя и пароль, используя базовую аутентификацию HTTP с location
директива в вашем nginx.conf
. Без имени пользователя или пароля вы не сможете получить доступ к каталогу.
Было бы неплохо заранее настроить TLS на вашем сайте, так как если ваш сайт не зашифрован, возможно, кто-то увидит ваше имя пользователя / пароль.
Вам понадобится htpasswd
программа установлена. В некоторых дистрибутивах пакет, содержащий его, называется apache2-utils
, на других это httpd-tools
. Заменить username
с желаемым именем пользователя. Вам будет предложено ввести пароль.
htpasswd -c /etc/nginx/htpasswd username
Затем в вашем nginx.conf
файл внутри вашего серверного блока, добавьте директиву местоположения ниже, заменив /privatedir
с каталогом, который вы хотите защитить, и Private Directory
с сообщением, которое вы хотите отобразить в строке входа в систему:
location /privatedir {
auth_basic "Private Directory";
auth_basic_user_file /etc/nginx/htpasswd;
}
Начать сначала nginx
и ваш каталог /privatedir
как показано в примере выше, для доступа потребуется имя пользователя и пароль. Если ничего не указано или это неверное имя пользователя и пароль, будет выдано сообщение HTTP 401 Unauthorized.
Для получения дополнительных сведений о базовой аутентификации HTTP обязательно проверьте документация nginx