插件窝 干货文章 nginx中的listen指令怎么用

nginx中的listen指令怎么用

listen 监听 server 端口 981    来源:    2025-04-25

Nginx listen 指令详解

listen 指令是 Nginx 配置中用于指定服务器监听哪些 IP 地址和端口的指令。它是 server 块中的核心配置之一。

基本语法

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]];

常用用法

1. 监听特定端口

listen 80;  # 监听所有IPv4地址的80端口
listen 443 ssl;  # 监听所有IPv4地址的443端口并启用SSL

2. 监听特定IP和端口

listen 192.168.1.100:80;  # 只监听192.168.1.100的80端口

3. IPv6监听

listen [::]:80;  # 监听所有IPv6地址的80端口
listen [::1]:80;  # 只监听IPv6本地回环地址

4. 设置默认服务器

listen 80 default_server;  # 将此server块设为80端口的默认服务器

5. 高级选项

listen 80 reuseport;  # 启用SO_REUSEPORT套接字选项,提高性能
listen 80 deferred;   # 使用延迟accept(),提高性能
listen 80 backlog=1024;  # 设置连接队列的最大长度

实际配置示例

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    # 其他配置...
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com;
    # SSL配置...
}

server {
    listen 192.168.1.100:8080 default_server;
    server_name _;
    # 默认服务器配置...
}

注意事项

  1. 如果没有指定 listen 指令,Nginx 默认会监听 *:80
  2. 多个 listen 指令可以同时使用
  3. default_server 参数用于指定当请求的 Host 头不匹配任何 server_name 时使用的默认服务器
  4. 在生产环境中,建议明确指定监听的 IP 地址和端口,而不是使用通配符

希望这些信息对你有帮助!如果你有更具体的需求或问题,请告诉我。