Appearance
缓冲区优化
优化缓冲区可以提高Nginx性能。
基本配置
客户端缓冲区
nginx
client_body_buffer_size 128k;
client_max_body_size 10m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;代理缓冲区
nginx
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;完整配置
生产环境配置
nginx
http {
# 客户端缓冲区
client_body_buffer_size 128k;
client_max_body_size 10m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
# 代理缓冲区
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
proxy_buffering on;
}参数说明
客户端缓冲区
client_body_buffer_size
- 请求体缓冲区大小
- 默认值:8k
- 推荐值:128k-256k
client_max_body_size
- 最大请求体大小
- 默认值:1m
- 推荐值:10m-50m
client_header_buffer_size
- 请求头缓冲区大小
- 默认值:1k
- 推荐值:1k-4k
large_client_header_buffers
- 大请求头缓冲区
- 格式:数量 大小
- 推荐值:4 4k
代理缓冲区
proxy_buffer_size
- 代理响应头缓冲区大小
- 默认值:4k
- 推荐值:4k-8k
proxy_buffers
- 代理响应体缓冲区
- 格式:数量 大小
- 推荐值:8 4k
proxy_busy_buffers_size
- 代理忙缓冲区大小
- 默认值:8k
- 推荐值:8k-16k
proxy_buffering
- 是否启用代理缓冲
- 默认值:on
- 推荐值:on
完整示例
生产环境配置
nginx
http {
# 客户端缓冲区
client_body_buffer_size 128k;
client_max_body_size 10m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
# 代理缓冲区
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
proxy_buffering on;
# FastCGI缓冲区
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
fastcgi_busy_buffers_size 8k;
# 输出缓冲区
output_buffers 1 32k;
postpone_output 1460;
}FastCGI缓冲区
基本配置
nginx
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
fastcgi_busy_buffers_size 8k;参数说明
fastcgi_buffer_size
- FastCGI响应头缓冲区大小
- 默认值:4k
- 推荐值:4k-8k
fastcgi_buffers
- FastCGI响应体缓冲区
- 格式:数量 大小
- 推荐值:8 4k
fastcgi_busy_buffers_size
- FastCGI忙缓冲区大小
- 默认值:8k
- 推荐值:8k-16k
输出缓冲区
基本配置
nginx
output_buffers 1 32k;
postpone_output 1460;参数说明
output_buffers
- 输出缓冲区
- 格式:数量 大小
- 推荐值:1 32k
postpone_output
- 延迟输出
- 默认值:1460
- 推荐值:1460
完整示例
生产环境配置
nginx
http {
# 客户端缓冲区
client_body_buffer_size 128k;
client_max_body_size 10m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
# 代理缓冲区
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
proxy_buffering on;
# FastCGI缓冲区
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
fastcgi_busy_buffers_size 8k;
# 输出缓冲区
output_buffers 1 32k;
postpone_output 1460;
# Gzip压缩
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss;
}常见问题
请求体过大
原因: client_max_body_size设置过小
解决: 增加client_max_body_size
nginx
client_max_body_size 20m;代理缓冲区不足
原因: proxy_buffers设置过小
解决: 增加proxy_buffers
nginx
proxy_buffers 16 4k;总结
缓冲区优化的关键点:
- 客户端缓冲区:设置合理的缓冲区大小
- 代理缓冲区:设置合理的代理缓冲区
- FastCGI缓冲区:设置合理的FastCGI缓冲区
- 输出缓冲区:设置合理的输出缓冲区
- 缓冲区大小:根据需求调整缓冲区大小
合理优化缓冲区,提高Nginx性能。