我正在配置一个故障转移服务器,负责接受任何传入请求,并以空白 200 响应进行回复。这样做的目的是尽量缩短回复时间,并确保我们不发送任何 40x 或 50x。
我尝试return 200;
在 Nginx 中使用所需的位置,但我的监控系统(Pingdom)不喜欢响应,并认为服务器没有响应。
有没有更好的方法来做到这一点,当然还要尽量减少服务器的开销?
答案1
HTTP 状态代码204 No Content
的意思是“我已经完成请求,但没有返回主体”:
10.2.5 204 无内容
服务器已完成请求,但无需返回实体主体,可能需要返回更新的元信息。响应可能以实体标头的形式包含新的或更新的元信息,如果存在,则应与请求的变体相关联。
如果客户端是用户代理,则它不应更改导致发送请求的文档视图。此响应主要用于允许输入操作,而不会导致用户代理的活动文档视图发生变化,但任何新的或更新的元信息都应应用于当前位于用户代理的活动视图中的文档。
204 响应不得包含消息正文,因此始终以标头字段后的第一个空行终止。
答案2
你可以通过如下配置块让 nginx 返回一个空的 HTTP 200:
location = /health {
return 200;
#access_log off;
}
access_log
如果您不想记录所有这些健康检查,可以取消注释该行。