温馨提示×

linux nginx如何优化

小樊
37
2026-10-07 21:20:21
栏目: 智能运维

在 Linux 上优化 Nginx,通常可以从系统层面、Nginx 配置层面、网络与内核参数、缓存与安全几个方向入手。下面是一份比较实用、可落地的优化清单。


一、系统 & 内核层面优化

1. 调整 Linux 内核参数(/etc/sysctl.conf)

# 增大文件描述符限制
fs.file-max = 1000000

# 网络相关
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# TCP 连接复用
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

# 提高端口范围
net.ipv4.ip_local_port_range = 1024 65535

执行:

sysctl -p

2. 提高文件描述符限制

# /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000

二、Nginx 基础性能优化

1. worker 进程与 CPU 绑定

worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 100000;

2. 事件模型优化

events {
    use epoll;
    worker_connections 65535;
    multi_accept on;
}

三、连接与超时优化

http {
    keepalive_timeout 30;
    keepalive_requests 1000;

    client_header_timeout 15;
    client_body_timeout 15;
    send_timeout 15;

    reset_timedout_connection on;
}

四、静态资源 & 缓存优化

1. 开启 Gzip

gzip on;
gzip_min_length 1k;
gzip_comp_level 5;
gzip_types text/plain text/css application/json application/javascript;

2. 静态文件缓存

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires 30d;
    access_log off;
}

五、反向代理 & 负载均衡优化

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m max_size=10g inactive=60m;

server {
    location / {
        proxy_pass http://backend;
        proxy_cache mycache;
        proxy_cache_valid 200 302 10m;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

连接复用:

upstream backend {
    server 127.0.0.1:8080;
    keepalive 32;
}

六、SSL/TLS 优化

ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;

开启 OCSP:

ssl_stapling on;
ssl_stapling_verify on;

七、日志优化

减少磁盘 IO:

access_log off;  # 或
access_log /var/log/nginx/access.log main buffer=32k flush=5s;

八、安全 & 稳定性

server_tokens off;
client_max_body_size 10m;
limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s;

九、监控 & 压测

  • 监控:nginx -T、stub_status
  • 压测:ab、wrk、jmeter
location /nginx_status {
    stub_status on;
    allow 127.0.0.1;
    deny all;
}

十、常见误区

❌ 盲目调大 worker_connections
❌ 开启 tcp_tw_recycle(已废弃)
❌ 所有请求都走 proxy
✅ 静态资源直接由 Nginx 处理
✅ 合理使用缓存


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

  • 是 静态站 / API / 反向代理 / 高并发场景
  • 当前 QPS、服务器配置
  • 是否已使用 Docker / K8s

我可以给你一套针对性优化配置。

0 踩