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?
Cheers