-
-
Save simlegate/75b18359316cc33d8e20 to your computer and use it in GitHub Desktop.
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"}'; | |
} |
@Gowtham95india It's for general 40X or 50X errors (aka a 404 will output '{"code":"1", "message": "Not Found"}'
You are returning 200 codes for all errors.. seems slightly odd.
@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.
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.
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
Can you please explain this ?
=200 @40*_json;