error pages: bug or feature?
Igor Sysoev
is at rambler-co.ru
Sun Jul 19 09:55:57 MSD 2009
On Sun, Jul 19, 2009 at 02:28:25AM +0200, Piotr Sikora wrote:
> Hello,
> I noticed that config:
>
> server {
> location / {
> // doesn't exist, will result in 502
> proxy_pass http://localhost:11111;
> error_page 502 @fetch;
> }
> location @fetch {
> proxy_pass http://localhost:8080;
> }
> }
>
> will result in response from http://localhost:8080 and "502 Bad Gateway"
> status,
> while config:
>
> server {
> location / {
> // doesn't exist, will result in 502
> proxy_pass http://localhost:11111;
> error_page 502 = @fetch;
> }
> location @fetch {
> proxy_pass http://localhost:8080;
> }
> }
>
> will result in response from http://localhost:8080 and "200 OK" status.
>
> The cause of this difference is '=' sign and the fact that
> ngx_http_core_error_page function sets overwrite to -1 in first case, and
> overwrite to 0 in second case.
>
> Is passing original response status with headers and body from "error page"
> some kind of feature or is it a bug and error pages without '=' shouldn't
> be allowed at all?
This is not a bug and not a feature (if you mean a feature as "well known
and documentated bug"). This is intended behaviour:
http://wiki.nginx.org/NginxHttpCoreModule#error_page
Otherwise, you will not be able to show your custom static error_page's
with original response status, it would always return 200 response:
error_page 404 /404.html;
location = /404.html {
root /path/to/page;
}
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list