服务覆盖:昆明·曲靖·玉溪·保山·昭通·丽江·普洱·临沧·楚雄·红河·文山·西双版纳·大理·德宏·怒江·迪庆

Nginx性能调优:让你的Web服务器跑得比竞争对手快一倍

eycit 2026-04-21 -1 次阅读 系统安装
---

theme: default themeName: "默认主题" title: "Nginx性能调优:让你的Web服务器跑得比竞争对手快一倍"


Nginx性能调优:让你的Web服务器跑得比竞争对手快一倍

Nginx是目前最流行的Web服务器之一,但很多人装完就用默认配置,完全没发挥出它的潜力。我见过不少公司花大价钱买了高配服务器,结果Nginx配置一塌糊涂,性能还不如人家低配机器。

今天把我多年调优Nginx的经验整理出来,从内核参数到Nginx配置,全链路优化,让你的服务器性能翻倍。

第一层:操作系统内核参数

Nginx再强,底层OS不配合也白搭。先把内核参数调好。

文件描述符限制

Nginx每个连接都需要一个文件描述符,默认限制1024太低了。

# 查看当前限制

ulimit -n

临时修改

ulimit -n 65535

永久修改 /etc/security/limits.conf

nginx soft nofile 65535 nginx hard nofile 65535 root soft nofile 65535 root hard nofile 65535

TCP参数优化

# /etc/sysctl.conf

增大TCP连接队列

net.core.somaxconn = 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

增大接收/发送缓冲区

net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216

开启TCP BBR拥塞控制(Linux 4.9+)

net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr

# 应用配置

sysctl -p

TCP BBR是Google开发的拥塞控制算法,在高延迟、高丢包网络下效果显著,实测吞吐量可以提升2-10倍。

第二层:Nginx主配置优化

Worker进程配置

# nginx.conf

Worker进程数,通常设为CPU核心数

worker_processes auto;

Worker进程绑定CPU(减少CPU切换开销)

worker_cpu_affinity auto;

每个Worker的最大连接数

events { worker_connections 65535; # 使用epoll(Linux最高效的IO多路复用) use epoll; # 允许一次接受多个连接 multi_accept on; }

HTTP全局配置

http {

# 开启sendfile,减少内核态/用户态切换 sendfile on; tcp_nopush on; tcp_nodelay on;

# 长连接超时 keepalive_timeout 65; keepalive_requests 1000;

# 关闭版本号显示(安全) server_tokens off;

# 开启Gzip压缩 gzip on; gzip_min_length 1k; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_vary on; gzip_proxied any;

# 客户端请求体大小限制 client_max_body_size 100m; client_body_buffer_size 128k;

# 请求头缓冲区 client_header_buffer_size 4k; large_client_header_buffers 4 16k;

# 超时设置 client_header_timeout 15s; client_body_timeout 15s; send_timeout 15s; }

静态文件缓存

server {

# 静态文件缓存

location ~* \.(jpgjpegpnggificocssjswoffwoff2ttfsvg)$ {

expires 30d; add_header Cache-Control "public, immutable"; access_log off;

# 开启open_file_cache,减少文件系统调用 open_file_cache max=10000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; } }

反向代理优化

upstream backend {

# 使用最少连接算法 least_conn;

server 127.0.0.1:8080 weight=1 max_fails=3 fail_timeout=30s; server 127.0.0.1:8081 weight=1 max_fails=3 fail_timeout=30s;

# 长连接到后端 keepalive 32; }

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

# 长连接 proxy_http_version 1.1; proxy_set_header Connection "";

# 缓冲区设置 proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 8 4k; proxy_busy_buffers_size 8k;

# 超时设置 proxy_connect_timeout 5s; proxy_read_timeout 60s; proxy_send_timeout 60s;

# 传递真实IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } }

第三层:HTTPS性能优化

HTTPS是现在的标配,但TLS握手有性能开销,需要专门优化。

SSL会话缓存

http {

# SSL会话缓存,减少重复握手 ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets off;

# 使用TLS 1.2和1.3 ssl_protocols TLSv1.2 TLSv1.3;

# 高性能加密套件 ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off;

# OCSP Stapling,减少证书验证时间 ssl_stapling on; ssl_stapling_verify on; resolver 223.5.5.5 223.6.6.6 valid=300s; }

HTTP/2

server {

listen 443 ssl http2; # HTTP/2多路复用,一个连接处理多个请求 # 比HTTP/1.1性能提升30-50% }

第四层:缓存层优化

Nginx Proxy Cache

http {

# 定义缓存区域 proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

server { location / { proxy_cache my_cache; proxy_cache_valid 200 1d; proxy_cache_valid 404 1m; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; proxy_cache_lock on;

# 缓存命中率监控 add_header X-Cache-Status $upstream_cache_status; } } }

性能测试验证

调优完了要验证效果,推荐用`wrk`做压测:

# 安装wrk

apt install wrk

压测:4线程,400并发,持续30秒

wrk -t4 -c400 -d30s http://your-server/

输出示例

Running 30s test @ http://your-server/ 4 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 12.34ms 5.67ms 89.12ms 78.90% Req/Sec 8.12k 1.23k 12.34k 67.89% 972345 requests in 30.01s, 1.23GB read Requests/sec: 32401.23 Transfer/sec: 42.00MB

对比调优前后的`Requests/sec`,就能看出优化效果。


写在最后

Nginx调优是个系统工程,从OS内核到应用层,每一层都有优化空间。

优化优先级:

1. 内核参数(文件描述符、TCP参数) 2. Worker进程和连接数 3. Gzip压缩 4. 静态文件缓存 5. HTTPS/HTTP2优化 6. 代理缓存

每次调优后都要做压测验证,不要凭感觉说「应该更快了」。数据说话,才是工程师的态度。


【放心,我们兜底】

不管你是自己尝试修复,还是需要专业人员上门,易云城IT服务都给你托底。修不好不收费,修好了质保期内随时找我。

📞 服务热线:13708730161 💬 微信:eyc1689 📧 邮箱:service@eycit.com 🌐 https://www.eycit.com

您身边的IT专家。

上一篇
Linux服务器内存优化:从「内存不够用」到「内存用得好...
下一篇
别等被黑了才后悔:企业内网安全的10个必做配置...