Welcome! Log In Create A New Profile

Advanced

Re: auth_basic within location block doesn't work when return is specified?

Igor A. Ippolitov
November 07, 2016 03:40AM
This behavior is cause by general request processing logic. You may look
at ngx_http_core_module.h which defines request processing phases.
You may notice that a rewrite phase ('return' acts as a rewrite,
actually) is run before access phase. So you have your request returned
before access rules are checked.
At the same time, try_files phase as after the access phase. So you may
try using:

location /auth {

auth_basic_user_file /etc/nginx/.htpasswd;

auth_basic "Secret";

# try_files will be used only for a valid authenticated user

try_files @redir =403; #403 will never be returned from here.

}

location @redir {

return 200 'hello';

}


This looks a little bit hacky, but is pretty reasonable e.g. if you want
to return 404.

Just curious, why won't you auth protect your final destination?

On 06.11.2016 18:09, Scott McGillivray wrote:
>
> i thought this would work but for some reason it doesn't.
>
> |location /auth { auth_basic_user_file /etc/nginx/.htpasswd; auth_basic
> "Secret"; return 200 'hello'; } |
>
>
> When i specify the return, 200 or 301, it just skips the auth_basic
> and processes the return statement.
>
> If i comment out the return statement it works OK. Ideally i want just
> an |/auth| endpoint that once authenticated it will 301 redirect to
> $host, e.g. return 301 http://$host http://$host
>
> Can someone explain why this behaves this way and what is the correct
> configuration.
>
> many thanks
>
>
>
> _______________________________________________
> nginx mailing list
> nginx@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx


_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

auth_basic within location block doesn't work when return is specified?

Scott McGillivray November 06, 2016 10:12AM

Re: auth_basic within location block doesn't work when return is specified?

Igor A. Ippolitov November 07, 2016 03:40AM

Re: auth_basic within location block doesn't work when return is specified?

Igor A. Ippolitov November 07, 2016 06:16AM

most efficient way to return on everything but a single directory?

Jonathan Vanasco November 07, 2016 08:16PM

Re: most efficient way to return on everything but a single directory?

Igor Sysoev November 07, 2016 11:36PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 313
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready