Nginx的listen指令用于指定服务器监听的IP地址和端口。以下是详细说明和案例:

语法

  1. listen address[:port] [default_server] [ssl] [http2] [spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

参数说明

  • address: 监听的IP地址,可以是IPv4或IPv6地址。如果省略,则监听所有可用IP地址。

  • port: 监听的端口号。如果省略,默认使用80端口(HTTP)或443端口(HTTPS)。

  • default_server: 指定该服务器块为默认服务器,处理未匹配到其他服务器块的请求。

  • ssl: 启用SSL/TLS加密。

  • http2: 启用HTTP/2协议。

  • proxy_protocol: 启用PROXY协议支持。

  • setfib: 设置FIB(Forwarding Information Base)值。

  • fastopen: 启用TCP Fast Open。

  • backlog: 设置监听队列的最大长度。

  • rcvbuf: 设置接收缓冲区大小。

  • sndbuf: 设置发送缓冲区大小。

  • accept_filter: 设置accept过滤器。

  • deferred: 延迟accept操作。

  • bind: 绑定到指定IP地址。

  • ipv6only: 仅监听IPv6地址。

  • reuseport: 启用SO_REUSEPORT选项。

  • so_keepalive: 设置TCP keepalive参数。

案例

  1. 监听所有IP地址的80端口:

    1. listen 80;
  2. 监听特定IP地址的80端口:

    1. listen 192.168.1.100:80;
  3. 监听所有IP地址的443端口并启用SSL:

    1. listen 443 ssl;
  4. 监听IPv6地址的80端口:

    1. listen [::]:80;
  5. 监听所有IP地址的80端口并设置为默认服务器:

    1. listen 80 default_server;
  6. 监听所有IP地址的80端口并启用HTTP/2:

    1. listen 80 http2;
  7. 监听所有IP地址的80端口并启用TCP Fast Open:

    1. listen 80 fastopen=256;
  8. 监听所有IP地址的80端口并设置接收缓冲区大小为32KB:

    1. listen 80 rcvbuf=32k;
  9. 监听所有IP地址的80端口并启用SO_REUSEPORT:

    1. listen 80 reuseport;
  10. 监听所有IP地址的80端口并设置TCP keepalive参数:

    1. listen 80 so_keepalive=on;

这些案例展示了listen指令的不同用法,可以根据实际需求进行配置。

本篇文章内容来源于:Nginx端口监听(listen指令)详细说明以及案例