Nginx 高级特性
1. 动态模块管理
load_module 指令
- 语法:
load_module file;
- 上下文:main(顶层)
- 示例:
load_module modules/ngx_http_geoip_module.so;
静态编译 vs 动态加载
| 特性 |
静态模块 |
动态模块 |
| 编译方式 |
编译进二进制 |
独立 .so 文件 |
| 添加/移除 |
需重新编译 |
修改配置即可 |
| 内存占用 |
始终占用 |
按需加载 |
编译动态模块
./configure --with-compat --add-dynamic-module=/path/to/module
make modules
配置示例
load_module modules/ngx_http_geoip_module.so;
load_module modules/ngx_stream_module.so;
2. 线程池与异步 I/O
thread_pool 指令
thread_pool default threads=32 max_queue=65536;
thread_pool fast threads=64 max_queue=131072;
aio 指令选项
| 值 |
说明 |
| off |
禁用 AIO |
| on |
内核 AIO |
| threads |
默认线程池 |
| threads=pool |
指定线程池 |
大文件优化配置
location /videos/ {
sendfile on;
aio threads=fast;
directio 4m;
output_buffers 2 1m;
}
性能影响
- 小文件:无显著提升
- 大文件:2-10x 提升
- 高并发:5-20x 提升
3. 开放文件缓存 (open_file_cache)
指令详解
| 指令 |
说明 |
默认值 |
| open_file_cache |
缓存配置 |
- |
| open_file_cache_valid |
有效期 |
60s |
| open_file_cache_min_uses |
最小访问次数 |
1 |
| open_file_cache_errors |
缓存错误 |
off |
缓存内容
配置示例
open_file_cache max=10000 inactive=60s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
配置建议矩阵
| 场景 |
max |
inactive |
valid |
| 高流量 CDN |
50000+ |
60s |
30s |
| 企业网站 |
10000 |
60s |
30s |
| 下载服务 |
5000 |
300s |
60s |
4. 最佳实践
- 核心模块静态编译,可选模块动态加载
- 线程数设置为 CPU 核心数 2-4 倍
- open_file_cache max 值为总文件数 1.5-2 倍