Nginx 生产环境调优通常包括以下几个方面:
- 工作进程数:通常设置为等于CPU核心数。
- 事件模型:通常设置为
epoll
或kqueue
,这取决于操作系统。 - 开启gzip压缩。
- 设置超时时间:如
keepalive_timeout
和send_timeout
。 - 配置缓冲区大小:
client_body_buffer_size
和proxy_buffer_size
等。 - 日志格式和访问日志存储:定期压缩并轮换日志文件。
- 开启缓冲写入文件:
open_file_cache
和open_file_cache_valid
。 - 配置防止Slowloris攻击。
- 配置防止DDoS攻击,如限制连接速率和连接数。
- 使用
server_tokens
关闭Nginx版本号显示。
以下是一个简单的Nginx配置示例:
user nginx;
worker_processes auto; # 设置为与CPU核心数相等
events {
worker_connections 1024;
use epoll; # 如果是Linux,使用epoll;如果是BSD,使用kqueue
}
http {
include mime.types;
default_type application/octet-stream;
# 开启gzip压缩
gzip on;
gzip_types text/plain application/xml application/javascript application/x-javascript text/javascript text/xml text/css;
# 设置超时时间
keepalive_timeout 65;
send_timeout 30;
# 配置缓冲区大小
client_body_buffer_size 16k;
proxy_buffer_size 4k;
# 日志配置
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
# 服务器配置
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 防止Slowloris攻击
slowloris_timeout 60s;
# 防止DDoS攻击
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
limit_rate 100k;
}
}