首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭nginx中错误的html包装

关闭nginx中错误的html包装
EN

Stack Overflow用户
提问于 2017-09-13 18:35:34
回答 2查看 2K关注 0票数 3

我在Ubuntu上使用nginx将请求转发到Spring Boot-driven API服务器。有时,API返回一个包含4xx和5xx错误的主体,客户端应用程序使用这些错误。例如,在API代码中,我可能返回:

代码语言:javascript
复制
{
  "message": "blah"
}

然而,nginx似乎将错误封装到一些HTML中,并将响应嵌入其中。有什么方法可以禁用此行为吗?是否有一种方法可以对所有4xx和5xx错误(例如,对于所有4xx和5xx错误,而不使用error_page显式地将它们全部写入)?

类似的问题和公认的答案,here,然而,这似乎是一个黑客。我肯定还有更好的方法.

编辑: Config如下所示:

代码语言:javascript
复制
server {
    listen 80;

    server_name my.domain.com;

    location / {
            proxy_pass http://127.0.0.1:9001;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-13 19:31:49

您只需在位置内添加一个error_page指令即可

代码语言:javascript
复制
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发送回客户端的代码。

票数 1
EN

Stack Overflow用户

发布于 2017-09-13 18:47:28

您可以尝试更新您的nginx conf并添加:

代码语言:javascript
复制
error_page 403 /error403.html;
location = /error403.html {
   root   html;
}

或者是一群错误:

代码语言:javascript
复制
error_page   500 502 504 /50x.html;
location = /50x.html {
    root   html;
}

在这里,您可以将html文件替换为json,这样nginx将返回json,例如:

代码语言:javascript
复制
error_page 404 /404.json;
location = /404.json {
    root   html;
}

不要忘记将404.json (和所有适当的文件)放到根中,这是在config中指定的。

在您的配置中,它如下所示:

代码语言:javascript
复制
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;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46204630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档