auth_basic error nginx: [emerg] "auth_basic" directive is not allowed here in

Maxim Dounin mdounin at mdounin.ru
Wed Oct 15 12:09:05 UTC 2014


Hello!

On Wed, Oct 15, 2014 at 07:55:07AM -0400, shambler81 wrote:

> http://nginx.org/ru/docs/http/ngx_http_auth_basic_module.html
> По документации все должно работать  вот так:
> 
> if ($host ~ "(dev|pma).example.com" ) {
>         auth_basic            "Website development";
>         auth_basic_user_file  /var/www/domain.com/www/dev/authfile;
> }
> 
> 
> Но оно выдает: auth_basic error nginx: [emerg] "auth_basic" directive is not
> allowed here in

Документация говорит, что директиву auth_basic можно использовать 
в контексте "http, server, location, limit_except".  Использовать 
к контексте if директиву auth_basic нельзя.

[...]

> ПОЧЕМУ ?

http://wiki.nginx.org/IfIsEvil

Правильное решение в данном случае - отдельный блок server{}.

В общем случае - директива auth_basic понимает переменные, и 
соответственно там можно написать "Closed site" или "off" в 
зависимости от ранее проверенных условий.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru