2015-10-01 52 views
0

对于404和500S/502S/504S的错误请求的详细信息,我回一个自定义的JSON错误页面:启用站点-NGINX:穿上定制404.json返回

{ 
    "response": 
    { 
      "status": "EXCEPTION_404_NOT_FOUND", 
    } 
} 

在我的/ service_nginx.conf ,我这样设置:

error_page 404 /404.json; 
location /404.json { 
    internal; 
    root /temp/error_response_templates; 
} 

而且这工作正常。也就是说,JSON每404返回一次。 但我想将请求或某些请求详细信息添加到返回的JSON中。 例如,http://service.com/param1/param2/,如果遇到404, 我想在返回的JSON中包含param1和param2。像这样:

{ 
    "response": 
    { 
     "status":"EXCEPTION_404_NOT_FOUND", 
     "param1":<param1 value>, 
     "param2":<param2 value>, 
    } 
} 

这可能吗?如果是的话,有人可以帮我怎么做吗? 在此先感谢!

回答

0

您可以设置像这样为每个错误代码:

error_page 404 @404_json; 

    location @404_json { 
    default_type application/json; 
    return 404 '{ "response": { "status": "EXCEPTION_404_NOT_FOUND", 
    }, "message": "Not Found"}'; 
    } 

或从文件加载错误消息,例如:

try_files /404.json =404; 

我们推荐avoid using variables模板(由于性能原因)。