Ответ 1
Попробуйте использовать знак =, который поможет вам:
location = /README {
auth_basic off;
allow all; # Allow all to see content
}
Как включить HTTP Basic Auth для всего, кроме определенного файла?
Вот моя текущая конфигурация блока сервера для местоположения:
location / {
auth_basic "The password, you must enter.";
auth_basic_user_file /etc/nginx/htpasswd;
}
location /README {
auth_basic off;
}
Однако в /README
он все еще запрашивает пароль.
Как мы можем это исправить?
Спасибо! Марк
Попробуйте использовать знак =, который поможет вам:
location = /README {
auth_basic off;
allow all; # Allow all to see content
}
Я делаю что-то подобное, используя "map" вместо "if", чтобы назначить переменную real_hasic и htpasswd файл:
map $http_host $siteenv {
default dev;
~^(?<subdomain>.+)\.dev dev;
~^(?<subdomain>.+)\.devprofile devprofile;
~^(?<subdomain>.+)\.devdebug devdebug;
~^(?<subdomain>.+)\.test test;
~^(?<subdomain>.+)\.demo demo;
~^(?<subdomain>.+)\.stage stage;
# Live
~^(?<subdomain>.+)\.live live;
~^.*\.(?P<subdomain>.+)\.[a-zA-Z]* live;
}
map $http_host $auth_type {
default "Restricted";
~^(?<subdomain>.+)\.dev "Development";
~^(?<subdomain>.+)\.devprofile "Development";
~^(?<subdomain>.+)\.devdebug "Development";
~^(?<subdomain>.+)\.test "Testing";
~^(?<subdomain>.+)\.stage "Stage";
~^(?<subdomain>.+)\.demo "Demo";
# Live
~^(?<subdomain>.+)\.live "off";
~^.*\.(?P<subdomain>.+)\.[a-zA-Z]* "off";
}
server {
.. etc ..
auth_basic $auth_type;
auth_basic_user_file /etc/nginx/conf.d/htpasswd-$siteenv;
}
Я не вижу ошибок в вашей конфигурации. Вот подробный ответ:
https://serverfault.com/questions/330580/enable-basic-auth-sitewide-and-disabling-it-for-subpages
Я пробовал с ниже одного, все еще он спрашивает пароль.
location = /README {
auth_basic off;
allow all; # Allow all to see content
}
пожалуйста помоги
Я делаю следующее:
location = /hc.php {
auth_basic "off";
}
location / {
try_files $uri $uri/ =404;
}
location = /somefile.txt {}
на первом месте, поэтому location / {}
может захватить оставшиеся запросыauth_basic "off"
требует кавычек, насколько я знаю,Вероятно, это будет работать в разных порядках и/или без двойных кавычек, но почему бы не попытаться сделать все как можно более правильным и полным, если это возможно.
Наиболее важные модификаторы:
(нет) Нет модификатора вообще означает, что местоположение интерпретируется как префикс. Чтобы определить совпадение, местоположение будет сопоставлено с началом URI.
=: знак равенства можно использовать, если местоположение должно соответствовать точному URI запроса. Когда этот модификатор совпадает, поиск останавливается прямо здесь.
~: тильда означает, что это местоположение будет интерпретироваться как регистрозависимое совпадение RE.
~ *: тильда, за которой следует модификатор звездочки, означает, что местоположение будет обрабатываться как нечувствительное к регистру совпадение RE.
^ ~: Предполагая, что этот блок является лучшим не-RE соответствием, карат, за которым следует модификатор тильды, означает, что соответствие RE не будет иметь место.
цитата отсюда: https://www.keycdn.com/support/nginx-location-directive