Nginx是大型架构的必备技能,下面我重点详解Nginx配置@mikechen
1. 合理设置worker进程数
Nginx采用Master-Worker进程模型,Master进程负责管理Worker进程,Worker进程负责处理实际的请求。
Worker进程数的设置应根据服务器的CPU核心数来确定,通常设置为CPU核心数的1到2倍。
worker_processes auto; # 自动检测CPU核心数,推荐 # worker_processes 4; # 如果你的CPU是4核
2.配置工作连接数
worker_connections
配置项决定了每个工作进程可以同时处理的最大连接数。
最佳实践: 确保这个值足够大,以应对你的流量峰值。
计算公式: 服务器能处理的最大并发连接数 = worker_processes
* worker_connections。
events { worker_connections 1024; }
3. 启用gzip压缩
gzip压缩可以显著减小HTTP响应的大小,从而加快页面加载速度。在Nginx中启用gzip压缩非常简单,只需在配置文件中添加以下几行:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml
gzip_proxied any;
gzip_vary on;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
4. 配置浏览器缓存
浏览器缓存可以减少重复请求,从而减轻服务器负担并提高用户体验。通过设置HTTP响应头中的Cache-Control
和Expires
字段,可以控制浏览器缓存行为。
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d;
access_log off;
}
5. 限制请求体大小
为了防止恶意用户上传过大的文件,Nginx可以限制请求体的大小。
client_max_body_size 100m;
6. 配置SSL/TLS
为您的网站配置SSL/TLS可以加密通信,保护用户数据安全。建议使用Let’s Encrypt等免费SLL证书。
7. 开启HTTP/2
HTTP/2是HTTP协议的最新版本,它在性能方面有显著提升。在Nginx中开启HTTP/2非常简单,只需在listen
指令中添加http2
参数。
listen 443 ssl http2;
8. 设置连接超时
适当设置连接超时时间可以防止恶意连接长时间占用服务器资源。
client_header_timeout 15s;
client_body_timeout 15s;
send_timeout 15s;
9. 隐藏Nginx版本信息
为了提高安全性,建议隐藏Nginx的版本信息,避免攻击者利用已知漏洞。
server_tokens off;
10. 使用LUA扩展
Nginx可以通过LUA扩展实现更复杂的功能,例如WAF(Web应用防火墙)、API网关等。
通过掌握以上10个Nginx配置最佳实践,您可以显著提升Nginx的性能、安全性和稳定性,为您的Web服务保驾护航。