conditional auth_basic

Maxim Dounin mdounin at mdounin.ru
Tue Oct 5 15:40:30 MSD 2010


Hello!

On Tue, Oct 05, 2010 at 07:33:40AM +0200, Cedric Jeanneret wrote:

> Hello,
> 
> I have a special setup involving a wildcard :
> server {
>   server_name         *.domain.ltd
>   access_log          /var/log/nginx/itnux_acces.log main;
>   error_log           /var/log/nginx/itnux_error.log info;
>   add_header X-Devel  "$host - production site";
> 
> 
>   location / { 
>     proxy_pass        http://localhost:9095;
>     proxy_set_header  Host $host;
>   }
> }
> 
> 
> I'd like to add some auth_basic, only if $host is NOT "demo.domain.ltd".
> 
> I thought I could make it like that:
>   location / { 
>     proxy_pass        http://localhost:9095;
>     proxy_set_header  Host $host;
>     if ($host != 'demo.domain.ltd') {
>       auth_basic  "Not for everyone ;)";
>       auth_basic_user_file  /var/www/vhosts/domain.ltd/htaccess;
>     }
>   }
> 
> But it seems that nginx doesn't like it:
> nginx -t
> [emerg]: "auth_basic" directive is not allowed here in /etc/nginx/vhosts/wildcard.domain.ltd.conf:17
> configuration file /etc/nginx/nginx.conf test failed
> 
> How can I do this ? Do I have to declare "demo.domain.ltd", and then the wildcard in two distinct servers ?

Yes, use two distinct server{} blocks.

server {
   server_name *.domain.ltd;

   auth_basic ...

   ...
}

server {
   server_name demo.domain.ltd;

   ...
}

Maxim Dounin



More information about the nginx mailing list