custom 403 error page quirk

Maxim Dounin mdounin at mdounin.ru
Mon Nov 1 11:33:31 MSK 2010


Hello!

On Mon, Nov 01, 2010 at 03:02:21AM -0400, megamic wrote:

> Hi
> 
> I have been trying to imlement a custom 403 error page  - to be
> triggered when the request method is not in HEAD,GET,POST. I started
> with something like this (note I was specifically triggering the 403
> error for GET requests for testing):
> 
>   root /htdocs
> 
>   location = /403.html {
>         internal;
>   }
> 
>   error_page 403 = /403.html;
> 
>   if ($request_method !~ ^(POST)$ ) {
>      return 403;
>   }
> 
>     location / {
>         index index.html;
>     }
> 
> For some reason, the above config *always* caused nginx internal 403
> error page to be generated - instead of my custom page at
> /htdoc/403.html.
> 
> After scouring forums and whatnot, I found a suggestion, which is to put
> the if() inside the location block - like:
> 
>     location / {
>         index index.html;
> 
>          if ($request_method !~ ^(POST)$ ) {
>              return 403;
>         }
>     }
> 
> Doing this and everything seemed to work. I just don't understand why -
> can someone explain this?

http://nginx.org/pipermail/nginx/2010-October/023353.html

Maxim Dounin



More information about the nginx mailing list