worker_processes auto; # 自动设置为CPU核心数
worker_rlimit_nofile 100000; # 每个worker进程能打开的文件描述符数量
events {
worker_connections 4096; # 每个worker的最大连接数
multi_accept on; # 一次接受所有新连接
use epoll; # 使用epoll事件模型(Linux)
}
http {
sendfile on; # 启用sendfile系统调用
tcp_nopush on; # 启用TCP_CORK
tcp_nodelay on; # 禁用Nagle算法
keepalive_timeout 30; # 保持连接超时
keepalive_requests 1000; # 每个保持连接的最大请求数
client_max_body_size 10m; # 最大上传文件大小
client_body_buffer_size 128k; # 请求体缓冲区大小
open_file_cache max=200000 inactive=20s; # 文件描述符缓存
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
gzip on;
gzip_min_length 1024; # 最小压缩文件大小
gzip_comp_level 6; # 压缩级别(1-9)
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_disable "msie6"; # 禁用旧版IE的压缩
ssl_session_cache shared:SSL:10m; # 共享SSL会话缓存
ssl_session_timeout 10m; # SSL会话超时
ssl_protocols TLSv1.2 TLSv1.3; # 启用安全的TLS版本
ssl_prefer_server_ciphers on; # 优先使用服务器端加密套件
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_stapling on; # OCSP装订
ssl_stapling_verify on;
# 编辑/etc/sysctl.conf添加以下内容
# 最大连接数相关
net.core.somaxconn = 65535 # 每个端口最大监听队列长度
net.ipv4.tcp_max_syn_backlog = 65536 # SYN队列长度
# TCP连接重用
net.ipv4.tcp_tw_reuse = 1 # 允许TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_tw_recycle = 0 # 不建议启用,可能导致NAT环境问题
# TCP Keepalive
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 10
# 内存相关
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_rmem = 4096 87380 6291456 # 最小/默认/最大接收窗口
net.ipv4.tcp_wmem = 4096 16384 4194304 # 最小/默认/最大发送窗口
# 拥塞控制算法
net.ipv4.tcp_congestion_control = bbr # 使用BBR算法(需要内核4.9+)
# 其他优化
net.ipv4.tcp_fin_timeout = 30 # FIN-WAIT-2状态超时
net.ipv4.tcp_slow_start_after_idle = 0 # 禁用空闲后慢启动
net.ipv4.ip_local_port_range = 1024 65535 # 本地端口范围
# 应用修改
sysctl -p
# 编辑/etc/security/limits.conf添加
* soft nofile 100000
* hard nofile 100000
root soft nofile 100000
root hard nofile 100000
# 编辑/etc/systemd/system.conf和/etc/systemd/user.conf
DefaultLimitNOFILE=100000
# 使用deadline或noop调度器(SSD推荐)
echo deadline > /sys/block/sda/queue/scheduler
# 增加文件系统inode缓存
echo 30 > /proc/sys/vm/vfs_cache_pressure
# 调整脏页比例
echo 10 > /proc/sys/vm/dirty_ratio
echo 5 > /proc/sys/vm/dirty_background_ratio
监控工具:
htop
- 查看系统负载iftop
- 网络流量监控iotop
- 磁盘I/O监控nginx-status
- Nginx状态监控压力测试:
ab
(Apache Benchmark)或wrk
进行压力测试安全考虑:
以上优化需要根据实际硬件配置和应用场景进行调整,建议在生产环境部署前进行充分测试。