Однако вам нужно разделить эти два домена на отдельные серверные блоки и оставить замену подстановочных знаков для других, или попробуйте использовать обходной путь, описанный ниже.
1. Директива location работает только с URI, а не с заголовком хоста
2. И если вы попытаетесь сделать что-то вроде
if ($host ~ "(dev|pma).example.com" ) {
auth_basic "Website development";
auth_basic_user_file /var/www/domain.com/www/dev/authfile;
}
, то получите ошибку
nginx: [Emerg] Директива auth_basic здесь не разрешена в .....
, поскольку директива auth_basic является безусловной
обходной путь ( не очень хорошо протестирован ):
if ($host ~ "(dev|pma).example.com" ) {
return 555;
}
error_page 555 = @auth;
location @auth {
auth_basic "Website development";
auth_basic_user_file /var/www/domain.com/www/dev/authfile;
try_files $uri /$uri /index.php?$args;
}
Более простым решением является использование map
map $http_host $auth_type {
default "off";
example.domain.tld "Restricted";
}
server {
auth_basic $auth_type;
}
или
Начиная с nginx 1.5.4+
модуль auth:
http://nginx.org/en/docs/http/ngx_http_auth_request_module. html