Conditional auth_basic

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 ?

Thank you in advance.

Best regards,

C.

Hello!

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

location / {
proxy_pass http://localhost:9095;
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 D.

Ok, thank you for your answer.

A bit ugly, knowing we can put some conditions in nginx config file ;).

But this way is working.

Cheers,

C.

On Tue, 5 Oct 2010 15:40:30 +0400