Skip to content

Instantly share code, notes, and snippets.

@simlegate
Created October 31, 2014 05:35
Show Gist options
  • Star 61 You must be signed in to star a gist
  • Fork 16 You must be signed in to fork a gist
  • Save simlegate/75b18359316cc33d8e20 to your computer and use it in GitHub Desktop.
Save simlegate/75b18359316cc33d8e20 to your computer and use it in GitHub Desktop.
Nginx return custom json
error_page 400 404 405 =200 @40*_json;
location @40*_json {
default_type application/json;
return 200 '{"code":"1", "message": "Not Found"}';
}
error_page 500 502 503 504 =200 @50*_json;
location @50*_json {
default_type application/json;
return 200 '{"code":"1", "message": "Unknown Error"}';
}
@brod-ie
Copy link

brod-ie commented Feb 9, 2017

@Gowtham95india It's for general 40X or 50X errors (aka a 404 will output '{"code":"1", "message": "Not Found"}'

@benoj
Copy link

benoj commented May 15, 2017

You are returning 200 codes for all errors.. seems slightly odd.

@mcmahonjohn
Copy link

@benoj That can actually bypass browsers like Chrome which would intercept errors and display a pop-up on their own to the user. So by returning a 200 code, but with data highlighting it's an error or something, it can be helpful to maintain control over what the browser shows the user.

@rjmunro
Copy link

rjmunro commented Jun 19, 2017

Returning 200 means that anything that isn't a straightforward web browser will not know it has an error. Things like search engines may assume that the page is correct and useful and try to index it. archive.org may try to store it. Assistive technology for disabled people may tell it's users the wrong thing.

@needleshaped
Copy link

Very useful for error-handling on API reverse proxy.
"error_page" directive can be put in specific "location" only, as it supports multiple contexts: http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment