I'm setting up an auth-before-proxy_pass config.

The following works now:

        location / {
                root /dev/null;
                auth_basic "Restricted Remote";
                auth_basic_user_file
                /data/etc/security/auth/passwd.basic;
                proxy_pass        https://mail-secure;
                proxy_set_header  Host $host:12345;
                proxy_set_header  X-Real-IP $remote_addr;
                proxy_set_header  X-Forwarded-For
                $proxy_add_x_forwarded_for;
        }

Now, if a visitor:

        (1) enters bad (or no) crendentials
        (2) clicks "Cancel" on the BASIC auth dialog box

the site displays a

        "401 Authorization Required"

page.

Instead, I want to add a rewrite on failed authorization.

If I try:

        location / {
                root /dev/null;
                auth_basic "Restricted Remote";
                auth_basic_user_file
                /data/etc/security/auth/passwd.basic;
+               error_page 401 = @redirect;
                proxy_pass        https://mail-secure;
                proxy_set_header  Host $host:12345;
                proxy_set_header  X-Real-IP $remote_addr;
                proxy_set_header  X-Forwarded-For
                $proxy_add_x_forwarded_for;
        }

+       location @redirect {
+               rewrite ^(.*)$ http://someothersite.com permanent;
+       }

I get the redirect on EVERY visit -- never even getting the chance to
enter credentials; i.e., the rewrite happens apparently BEFORE the auth
step.

I think this may be because:

        @
        http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error

                401 UnauthorizedSimilar to 403 Forbidden, but
                specifically for use when authentication is required and
                has failed or **HAS NOT YET BEEN PROVIDED**.[2] The
                response must include a WWW-Authenticate header field
                containing a challenge applicable to the requested
                resource. See Basic access authentication and Digest
                access authentication.

and that I may have do the @redirect only if some header says "failed".

How do I redirect ONLY if there's been a failed AUTH?

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

Reply via email to