nginx发送空白200响应


19

我正在配置故障转移服务器,其任务是接受任何传入请求,并以空白200响应进行回复。这样做的目的是最大程度地减少回复时间,并确保我们不发送任何40x或50x。

我尝试return 200;在Nginx中使用所需的位置,但是我的监视系统(Pingdom)不喜欢响应,并认为服务器没有响应。

有没有更好的方法可以做到这一点,当然,服务器上的开销却很小?

Answers:


23

HTTP状态代码204 No Content的意思是“我已经完成了请求,但是没有返回的正文”:

10.2.5 204无内容

服务器已满足请求,但不需要返回实体,可能要返回更新的元信息。响应可以包括实体标题形式的新的或更新的元信息,如果存在,则应与所请求的变量相关联。

如果客户端是用户代理,则不应更改导致发送请求的文档视图。尽管任何新的或更新的元信息都应该应用于当前在用户代理的活动视图中的文档,但是该响应主要旨在允许输入操作而不会导致更改用户代理的活动文档视图。

204响应必须不包含消息正文,因此始终由标头字段之后的第一个空行终止。


您好亚历克斯感谢您的来信。只是想知道这些天所有主要浏览器是否都能识别204响应代码。即,如果我的服务器开始发送204,周围(浏览器,手机,终端)访问者是否有可能出错?
Sparsh Gupta,

1
@SparshGupta对不起,我不是浏览器兼容性方面的专家。我已经快速检查了几个浏览器(在Mac OSX下为FF 7和Safari)-它们完全不起作用。例如,如果您已经打开一个页面,则将一个返回204的URL放入地址栏中,然后按Enter键,两个浏览器仍会显示该前一页。
亚历山大·阿扎罗夫

29

您可以通过以下配置块让nginx返回空的HTTP 200:

location = /health {
  return 200;
  #access_log off;
}

access_log如果您不希望记录所有这些运行状况检查,则可以取消注释该行。


6
应当注意,定位后的“ =”符号很重要。没有它,该文件必须存在,否则nginx的将不会返回200有了它,你可以弥补任何你想要的位置,而无需担心文件和nginx的将愉快地返回200
林安德烈

如何将其与基本身份验证结合使用,以使身份验证的请求返回200,而未经身份验证的返回401?
基里尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.