我在Ubuntu上使用nginx将请求转发到Spring Boot-driven API服务器。有时,API返回一个包含4xx和5xx错误的主体,客户端应用程序使用这些错误。例如,在API代码中,我可能返回:
{
"message": "blah"
}然而,nginx似乎将错误封装到一些HTML中,并将响应嵌入其中。有什么方法可以禁用此行为吗?是否有一种方法可以对所有4xx和5xx错误(例如,对于所有4xx和5xx错误,而不使用error_page显式地将它们全部写入)?
类似的问题和公认的答案,here,然而,这似乎是一个黑客。我肯定还有更好的方法.
编辑: Config如下所示:
server {
listen 80;
server_name my.domain.com;
location / {
proxy_pass http://127.0.0.1:9001;
}
}发布于 2017-09-13 19:31:49
您只需在位置内添加一个error_page指令即可
server {
listen 80;
server_name my.domain.com;
location / {
error_page 404 = 404;
proxy_pass http://127.0.0.1:9001;
}
}这样做的目的是取消以前在http块中设置的指令中的error_page。并将结果按原样传递给客户机。您不希望在这个error_page指令中将JSON发送回客户端的代码。
发布于 2017-09-13 18:47:28
您可以尝试更新您的nginx conf并添加:
error_page 403 /error403.html;
location = /error403.html {
root html;
}或者是一群错误:
error_page 500 502 504 /50x.html;
location = /50x.html {
root html;
}在这里,您可以将html文件替换为json,这样nginx将返回json,例如:
error_page 404 /404.json;
location = /404.json {
root html;
}不要忘记将404.json (和所有适当的文件)放到根中,这是在config中指定的。
在您的配置中,它如下所示:
server {
listen 80;
server_name my.domain.com;
location / {
proxy_pass http://127.0.0.1:9001;
}
error_page 404 /404.json;
location = /404.json {
root html;
}
error_page 500 502 504 /50x.json;
location = /50x.json {
root html;
}
}https://stackoverflow.com/questions/46204630
复制相似问题