温馨提示×

如何优化Debian的Nginx

小樊
46
2026-10-18 06:10:17
栏目: 智能运维

优化 Debian 上的 Nginx,通常可以从系统层、Nginx 配置层、安全与运维层三个维度来做。下面我按“实用 + 可落地”的方式给你一份清单。


一、系统层优化(Debian)

1. 调整文件描述符限制

Nginx 高并发时容易遇到 too many open files

# 查看当前限制
ulimit -n

# 修改系统限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf

并使 systemd 生效:

mkdir -p /etc/systemd/system/nginx.service.d
cat > /etc/systemd/system/nginx.service.d/limits.conf <<EOF
[Service]
LimitNOFILE=65535
EOF

systemctl daemon-reload
systemctl restart nginx

2. 内核参数优化(TCP)

编辑 /etc/sysctl.conf:

net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.ip_local_port_range = 1024 65535

生效:

sysctl -p

二、Nginx 配置优化

1. worker 进程与连接数

/etc/nginx/nginx.conf

user www-data;
worker_processes auto;          # 自动匹配 CPU 核数
worker_rlimit_nofile 65535;

events {
    worker_connections 10240;   # 单 worker 连接数
    use epoll;                  # Debian/Linux 推荐
    multi_accept on;
}

2. 开启高效传输

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 30;
    keepalive_requests 1000;
}

3. 开启 Gzip(减少带宽)

gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;
gzip_vary on;

4. 静态资源缓存

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

5. 使用 HTTP/2(强烈推荐)

listen 443 ssl http2;

并确保:

  • 使用 TLS 1.2 / 1.3
  • 证书来自 Let’s Encrypt

三、安全与稳定性优化

1. 隐藏 Nginx 版本

server_tokens off;

2. 限制请求频率(防 CC)

http {
    limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
}

server {
    limit_req zone=req_zone burst=20 nodelay;
}

3. 禁用不必要的模块(编译优化,可选)

如果是 apt 安装,可改用精简版:

apt install nginx-light

或源码编译只保留需要模块。


四、运维与监控

1. 开启 status 监控

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

2. 日志优化(减少 IO)

access_log off;  # 高并发接口可关闭
# 或
access_log /var/log/nginx/access.log main buffer=32k flush=5s;

五、常见性能对比(经验值)

项目 默认 优化后
并发连接 几千 几万+
带宽占用 高 ↓ 30–60%
响应延迟 中 ↓ 明显

六、推荐的“最小可用优化模板”

如果你只想快速见效:

  • worker_processes auto
  • worker_connections 10240
  • sendfile on
  • gzip on
  • http2
  • limit_req

如果你愿意,可以告诉我:

  • Debian 版本(11 / 12?)
  • Nginx 用途(API / 静态站 / 反代?)
  • 是否有 HTTPS / 高并发场景?

我可以直接帮你写一份可直接用的 nginx.conf。

0 踩