插件窝 干货文章 nginx upstream如何开启keepalive

nginx upstream如何开启keepalive

Keepalive 连接 Upstream backend 829    来源:    2025-04-25

Nginx Upstream Keepalive 配置指南

在Nginx中配置upstream的keepalive可以显著提高反向代理的性能,减少TCP连接的建立和关闭开销。以下是详细的配置方法:

基本配置

在upstream块中启用keepalive:

upstream backend {
    server backend1.example.com;
    server backend2.example.com;

    # 启用keepalive连接池
    keepalive 32;  # 保持的连接数
}

然后在对应的location或server块中使用:

server {
    location / {
        proxy_pass http://backend;

        # 启用HTTP keepalive
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

详细参数说明

  1. keepalive:指定每个worker进程与upstream服务器保持的最大空闲连接数

    • 推荐值:根据服务器负载情况调整,通常为几十到几百
    • 设置过高会占用较多内存
  2. proxy_http_version 1.1:强制使用HTTP/1.1协议,支持keepalive

  3. proxy_set_header Connection "":清除Connection头,防止干扰

高级配置选项

upstream backend {
    server backend1.example.com;
    server backend2.example.com;

    keepalive 32;
    keepalive_timeout 60s;  # 空闲连接保持时间
    keepalive_requests 1000;  # 单个连接最大请求数
}

监控keepalive状态

可以通过Nginx的stub_status模块监控keepalive连接:

location /nginx_status {
    stub_status;
    allow 127.0.0.1;
    deny all;
}

访问该接口可以看到Active connections中包含keepalive连接数。

注意事项

  1. 确保后端服务器也支持keepalive
  2. 对于HTTPS upstream,需要额外配置SSL会话复用
  3. 在动态负载环境中,过长的keepalive_timeout可能导致连接指向已下线的服务器
  4. 监控系统资源使用情况,避免keepalive连接占用过多内存

通过合理配置keepalive,可以显著减少TCP握手和TLS协商的开销,提高代理性能。