listen

配置监听使用指令listen,其配置方法主要有三种:

  • 第一种配置监听的IP地址,语法结构为:

    listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [deferred] [accept_filter=filter] [bind] [ssl];
  • 第二种配置监听端口,其语法结构是:

    listen port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on | off] [ssl];
  • 第三种配置UNIX Domain Socket(一种在原有Socket框架上发展起来的IPC机制,用于在单个主机上执行客户/服务器通信),其语法结构为:

    listen  unix:path [default_server] [backlog=number] [rcvbuf=size] [sndbuf=size][accept_filter=filter] [deferred] [bind] [ssl];
  • address:IP地址,如果是IPv6的地址,需要使用中括号“[]”括起来,比如[fe80::1]。

  • port:端口号,如果只定义了IP地址没有定义端口号,就使用80端口。

  • path:socket文件路径,如/var/run/nginx.sock。

  • default_server:标识符,将此虚拟主机设置为address:port的默认主机。

  • setfib=number:Nginx-0.8.44中使用这个变量为监听socket关联路由表,目前只对FreeBSD起作用。

  • backlog=number:设置监听函数listen()最多允许多少网络连接同时处于挂起状态,在FreeBSD中默认为-1,其他平台默认为511。

  • rcvbuf=size:设置监听socket接收缓存区大小。

  • sndbuf=size:设置监听socket发送缓存区大小。

  • accept_filter=filter:设置监听端口对请求的过滤,被过滤的内容不能被接收和处理。

  • deferred:标识符,将accept()设置为Deferred模式。

  • bind:标识符,使用独立的bind()处理此address:port;一般情况下,对于端口相同而IP地址不同的多个连接,Nginx服务器将只使用一个监听命令,并使用bind()处理端口相同的所有连接。

  • ssl:标识符,设置会话连接使用SSL模式进行,此标识符和Nginx服务器提供的HTTPS服务有关。

listen指令的使用看起来比较复杂,但其实在一般的使用过程中,相对来说比较简单,默认的设置为:

listen  *:80 | *:8000;

即监听所有80端口和8000端口。

Last updated