Nginx 配置文件的优化可以从多个方面进行,以下是一些常见的优化建议:
根据服务器的 CPU 核心数来设置 worker 进程数,通常设置为 CPU 核心数的两倍。
worker_processes auto; # 或者设置为 CPU 核心数
增加每个 worker 进程可以同时处理的最大连接数。
events {
worker_connections 1024; # 可以根据需要调整
}
保持连接可以减少 TCP 握手的开销。
http {
keepalive_timeout 65; # 保持连接的超时时间(秒)
keepalive_requests 100; # 每个连接允许的最大请求数
}
启用 gzip 压缩可以减少传输数据的大小,加快页面加载速度。
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
对静态文件设置缓存可以减少服务器的负载。
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
HTTP/2 可以提高多路复用和头部压缩的效率。
server {
listen 443 ssl http2;
# 其他 SSL 配置
}
使用更高效的加密套件和协议版本。
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
对于动态内容,可以使用 Nginx 的反向代理缓存来提高响应速度。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}
只启用必要的 Nginx 模块,减少内存占用。
./configure --without-http_gzip_static_module --without-http_autoindex_module
减少日志级别和日志文件的大小,可以提高性能。
error_log /var/log/nginx/error.log debug;
access_log /var/log/nginx/access.log combined buffer=32k flush=300s;
这些选项可以优化 TCP 传输。
tcp_nopush on;
tcp_nodelay on;
如果使用 Nginx 作为负载均衡器,可以调整一些参数来提高性能。
upstream backend {
server backend1.example.com;
server backend2.example.com;
keepalive 32;
}
server {
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
通过以上这些优化措施,可以显著提高 Nginx 的性能和稳定性。不过,具体的优化策略还需要根据实际的应用场景和服务器配置进行调整。