Я следил за инструкциями и по-прежнему не могу защитить паролем свой сайт. Вот что мой app-nginx.config выглядит так:
Где я ошибаюсь? Я скопировал и вставил это право с учебного сайта.
Ответ 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