Nginx:如何使用 accept_filter=httpready 设置多个服务器

Nginx: how to set up multiple servers with accept_filter=httpready

在 FreeBSD 机器上,我有一个超级简单的 Nginx 配置文件 (nginx/1.8.1):

server {
  server_name .domain1.com;
  listen 80 accept_filter=httpready;
  index index.html;
  location / {
      root /home/www1;
  }
}

server {
  server_name domain2.com;
  listen 80 default_server accept_filter=httpready;
  index index.htm;
  location / {
      root /home/www2;
  }
}

如果我只为其中一台服务器启用了 accept_filter=httpready,则此方法有效。但是正如上面所写,它失败了,

nginx:[emerg] 0.0.0.0:80 的重复监听选项

为什么我不能为两个服务器都设置 accept_filter=httpready

http://nginx.org/r/listen

The listen directive can have several additional parameters specific to socket-related system calls. These parameters can be specified in any listen directive, but only once for a given address:port pair.

所以你应该只使用一次accept_filter=httpready,但它对所有监听相同address:port的服务器块都有效。