nginx 是否使用“延迟”作为监听指令的默认值?

Ada*_*son 3 11.10 nginx

许多站点建议在 nginx 的 listen 指令中使用“延迟”。这在 Ubuntu 安装中是必需的,还是“听 80”在默认情况下“延迟”就足够了?

listen 80 default deferred; # for Linux
Run Code Online (Sandbox Code Playgroud)

Lek*_*eyn 5

deferred 默认情况下在 Ubuntu 上没有启用,没有默认启用它的补丁。

以下是我试图了解该选项的作用。

来自http://wiki.nginx.org/HttpCoreModule#listen的参考:

deferred -- 表示使用accept(2)在 Linux 上通过选项延迟的TCP_DEFER_ACCEPT

对,它指的是手册页accept,第 2 节 - 系统调用(内核提供的函数)。不幸的是,我在那个手册页中找不到任何关于它的效果的信息,所以我开始挖掘源代码 ( apt-get source nginx)。

该选项在nginx-0.8.54/src/http/ngx_http_core_module.c:3534. 如果deffered accept不支持,您应该在启动时收到错误消息:

此平台不支持延迟接受,忽略

在这一点上,我停止了进一步的搜索。deferred如果无法禁用,则在 nginx 中默认启用是没有意义的。