nginx 是否使用“deferred”作为 listen 指令的默认值?

nginx 是否使用“deferred”作为 listen 指令的默认值?

许多站点建议将“deferred”与 nginx 的 listen 指令一起使用。这在 Ubuntu 安装中是否有必要,或者默认情况下启用“deferred”时“listen 80”是否足够?

listen 80 default deferred; # for Linux

答案1

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

以下是我尝试去理解该选项的作用。

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

accept(2)deferred——表示在 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 中默认启用它没有任何意义。

相关内容