Подтвердить что ты не робот

Nginx - защита паролем не работает

Я следил за инструкциями и по-прежнему не могу защитить паролем свой сайт. Вот что мой app-nginx.config выглядит так:

server {
    listen       80;
    server_name  Server_Test;
    auth_basic            "Restricted";
    auth_basic_user_file  /usr/local/nginx/conf/htpasswd;

...

}

Где я ошибаюсь? Я скопировал и вставил это право с учебного сайта.

4b9b3361

Ответ 1

Убедитесь, что Nginx может получить доступ к файлу пароля. Пути для файла auth_basic_user_file относятся к каталогу nginx.conf. Поэтому, если ваш nginx.conf находится в /usr/local/nginx, вы можете изменить свою директиву на:

auth_basic_user_file  conf/htpasswd;

и файл должен быть доступен для чтения.

Этот файл должен быть доступен для чтения сотрудникам, работающим из непривилегированных пользователь. E. g. когда nginx запускается с www, вы можете установить разрешения как:

chown root:nobody htpasswd_file
chmod 640 htpasswd_file

- от http://wiki.nginx.org/HttpAuthBasicModule

Ответ 2

Просто сделал мой nginx-сервер для работы и даже настроил его для защиты доступа к корневой папке. Я хотел бы поделиться своими выводами с вами и по пути также дать хороший и рабочий ответ на вопрос на этой странице.

Как новый пользователь nginx (версия 1.10.0 - Ubuntu). Первой проблемой, которую я получил, было знать расположение файлов, поэтому вот критические местоположения:

Знайте свои местоположения:

Расположение главной папки: /etc/nginx

Расположение сайта по умолчанию: /var/www/ или даже /ver/www/html/ (внутри папки html будет файл index.html - надеюсь, что вы знаете, что делать дальше).

Файлы конфигурации:

Основной файл конфигурации: /etc/nginx/nginx.conf

Текущий сайт сервер conf: /etc/nginx/sites-enabled (при первой установке там есть один файл, который называется default, и вам нужно будет использовать sudo, чтобы иметь возможность изменять это (например: sudo vi default)

Добавить пароль:

Итак, теперь, когда вы знаете игроков (для статического готового сайта в любом случае), поместите некоторые файлы в папку "html" и добавьте к нему защиту паролем.

Чтобы установить пароль, нам нужно сделать 2 вещи: 1. Создайте файл паролей (с таким количеством пользователей, сколько захотите, но я соглашусь с 1). 2. Настройте текущий сервер ( "по умолчанию" ), чтобы ограничить эту страницу и использовать файл в 1, чтобы включить защиту паролем.

1. Позвольте создать пароль:

Линия, которую я хотел бы использовать для этого: sudo htpasswd -c /etc/nginx/.htpasswd john (вы получите подсказку для ввода и повторного ввода пароля), вы можете сделать это в одной строке: sudo htpasswd -c /etc/nginx/.htpasswd john [your password]

Я объясню каждую часть команды:

  • sudo htpasswd - делать это с использованием более высокого разрешения.
  • -c - для: создать файл (чтобы добавить другого пользователя к существующему пользователю, пропустите этот аргумент)
  • /etc/nginx/.htpasswd - имя созданного файла ('.htpsswd' в папке /etc/nginx )
  • john - имя пользователя (для ввода в поле запроса пользователя)
  • password - это необходимый пароль для этого конкретного имени пользователя. (при появлении запроса..)

Обычно команда htpasswd не работает для вас, поэтому вам придется установить пакет:

Использование: sudo apt-get install apache2-utils (если это не удается, попробуйте использовать sudo apt-get update и повторите попытку)

2. Позвольте настроить сервер для использования этого файла для аутентификации

Позвольте использовать эту строку для редактирования текущего файла конфигурации сервера (по умолчанию):

sudo vi /etc/nginx/sites-enabled/default (Вам не нужно использовать "vi", но мне это нравится.)

Файл выглядит следующим образом после удаления большинства комментариев (#)

# Default server configuration
#
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

}

Нам нужно добавить две строки внутри блока ( "/" указывает на корневую папку сайта), поэтому он будет выглядеть так:

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;

        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
     }

Я объясню эти новые строки:

  • auth_basic "Restricted Content"; - определяет тип управления доступом
  • auth_basic_user_file /etc/nginx/.htpasswd; - определяет файл, который мы создали (/etc/nginx/.htppasswd), в качестве файла паролей для этой аутентификации.

Перезапустите службу и пользуйтесь защищенным паролем сайтом:

sudo service nginx restart

Виола - наслаждайся...

Вот еще несколько интересных уроков для этого:

Очень хорошее объяснение

Еще один учебник по goo