У меня проблемы с установкой пароля на целевой странице моего сайта. Я видел, как этот вопрос задавали несколько раз, и пробовал исправления, за которые проголосовали за каждое сообщение. До сих пор я пытался изменить разрешения для .htpasswd, изменив местоположение .htpasswd, используя местоположение абсолютного пути для .htpasswd и разместив директивы auth_basic и auth_basic_user_file за пределами 'location' и в основном блоке 'server', но поп -up, запрашивающий имя пользователя и пароль, все еще не отображается, когда я перехожу на свой URL. Я бы хотел, чтобы при переходе к моему основному URL-адресу появлялось всплывающее окно с запросом пароля, а не какой-либо определенный каталог или файл. Я просмотрел и выполнил множество руководств и использовал команду htpasswd для создания файла .htpasswd. Насколько я понимаю, это правильная конфигурация / etc / nginx / sites-enabled / default. Что я здесь делаю не так?
Это мой файл конфигурации:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
return 310 https://$server_name$request_uri;
location / {
try_files $uri $uri/ =404;
auth_basic "Under Construction";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Ваш return
заявление отменяет location
заявление.
У вас должна быть такая конфигурация:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
location = / {
try_files $uri $uri/ =404;
auth_basic "Under Construction";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location / {
return 310 https://$server_name$request_uri;
}
}
Так что location = /
выражение соответствует ровно одному пути, здесь это корневой URI для сайта.
Тогда location /
соответствует всем остальным путям на сайте.
nginx анализирует location
блокировать так, чтобы location
с участием =
всегда используется, если несколько location
блоки соответствуют одному и тому же пути.