Назад | Перейти на главную страницу

nginx - Как управлять личными каталогами

это очень простой вопрос, но мне не удалось найти никакой документации о том, как его настроить. У меня есть базовая настройка личного веб-сервера 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