Appearance
全局配置指令
全局配置指令影响Nginx的整体运行,通常位于配置文件的最外层。
user指令
指定Nginx运行用户。
语法
nginx
user user [group];示例
nginx
user nginx;
user nginx nginx;
user www-data;说明
- 指定Worker进程运行用户
- Master进程通常以root运行
- 确保用户对相关目录有访问权限
- 不同系统默认用户不同:
- CentOS/RHEL:nginx
- Ubuntu/Debian:www-data
worker_processes指令
设置Worker进程数量。
语法
nginx
worker_processes number | auto;示例
nginx
worker_processes 4;
worker_processes auto;说明
auto:自动设置为CPU核心数- 数字:指定具体进程数
- 通常设置为CPU核心数或核心数的2倍
- 查看CPU核心数:
bash
# Linux
nproc
# 或
cat /proc/cpuinfo | grep processor | wc -l推荐配置
nginx
# 通用配置
worker_processes auto;
# 高并发场景
worker_processes 8;
# 低内存场景
worker_processes 2;error_log指令
设置错误日志路径和级别。
语法
nginx
error_log file [level];
error_log syslog:server=address[,parameter=value] [level];
error_log memory:size [level];示例
nginx
error_log /var/log/nginx/error.log;
error_log /var/log/nginx/error.log warn;
error_log syslog:server=192.168.1.1:514,facility=local7,tag=nginx,severity=error;
error_log memory:32m error;日志级别
| 级别 | 说明 |
|---|---|
| debug | 调试信息,最详细 |
| info | 一般信息 |
| notice | 通知信息(默认) |
| warn | 警告信息 |
| error | 错误信息 |
| crit | 严重错误 |
| alert | 警报 |
| emerg | 紧急情况,最严重 |
推荐配置
nginx
# 开发环境
error_log /var/log/nginx/error.log debug;
# 生产环境
error_log /var/log/nginx/error.log warn;
# 高安全环境
error_log /var/log/nginx/error.log error;pid指令
设置PID文件路径。
语法
nginx
pid file;示例
nginx
pid /var/run/nginx.pid;
pid /usr/local/nginx/logs/nginx.pid;说明
- 存储Master进程的PID
- 用于进程管理和信号控制
- 默认值:
/usr/local/nginx/logs/nginx.pid或/var/run/nginx.pid
worker_rlimit_nofile指令
设置Worker进程的最大文件描述符数量。
语法
nginx
worker_rlimit_nofile number;示例
nginx
worker_rlimit_nofile 65535;说明
- 限制Worker进程能打开的文件数量
- 应该大于
worker_connections - 需要系统支持足够的文件描述符
系统限制检查
bash
# 查看系统限制
ulimit -n
# 临时修改
ulimit -n 65535
# 永久修改
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.confworker_rlimit_sigpending指令
设置挂起信号队列的大小。
语法
nginx
worker_rlimit_sigpending number;示例
nginx
worker_rlimit_sigpending 1024;worker_shutdown_timeout指令
设置Worker进程优雅退出的超时时间。
语法
nginx
worker_shutdown_timeout time;示例
nginx
worker_shutdown_timeout 240s;说明
- 当Worker进程收到退出信号时,等待现有连接完成的超时时间
- 超时后强制退出
- 默认值:无限制
working_directory指令
设置工作目录。
语法
nginx
working_directory directory;示例
nginx
working_directory /usr/local/nginx;说明
- 设置核心文件生成目录
- 默认值:编译时指定的前缀目录
daemon指令
设置是否以守护进程方式运行。
语法
nginx
daemon on | off;示例
nginx
daemon on;
daemon off;说明
on:后台运行(默认)off:前台运行,用于调试
master_process指令
启用或禁用Master进程模式。
语法
nginx
master_process on | off;示例
nginx
master_process on;说明
on:启用Master/Worker模式(默认)off:单进程模式,仅用于调试
timer_resolution指令
设置定时器分辨率。
语法
nginx
timer_resolution interval;示例
nginx
timer_resolution 100ms;说明
- 减少系统调用次数
- 可能影响时间精度
- 默认值:无限制
pcre_jit指令
启用PCRE JIT编译。
语法
nginx
pcre_jit on | off;示例
nginx
pcre_jit on;说明
- 加速正则表达式匹配
- 需要PCRE库支持JIT
- 推荐开启
thread_pool指令
创建线程池。
语法
nginx
thread_pool name threads=number [max_queue=size];示例
nginx
thread_pool default threads=32 max_queue=65536;说明
- 用于异步文件操作
- 提高文件I/O性能
- 可以创建多个线程池
env指令
设置环境变量。
语法
nginx
env VAR[=VALUE];示例
nginx
env PATH;
env MALLOC_ARENA_MAX=2;说明
- 设置Worker进程的环境变量
- 默认清空环境变量
load_module指令
动态加载模块。
语法
nginx
load_module file;示例
nginx
load_module modules/ngx_http_geoip2_module.so;说明
- 动态加载第三方模块
- 需要Nginx支持动态模块
完整示例
nginx
user nginx;
worker_processes auto;
worker_rlimit_nofile 65535;
worker_shutdown_timeout 240s;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
daemon on;
master_process on;
pcre_jit on;
# 线程池配置
thread_pool default threads=32 max_queue=65536;
# 环境变量
env PATH;
env MALLOC_ARENA_MAX=2;
# 动态模块
# load_module modules/ngx_http_geoip2_module.so;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
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;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
include /etc/nginx/conf.d/*.conf;
}性能优化建议
高并发场景
nginx
worker_processes auto;
worker_rlimit_nofile 65535;
error_log /var/log/nginx/error.log error;低内存场景
nginx
worker_processes 2;
worker_connections 512;调试场景
nginx
daemon off;
master_process off;
error_log /var/log/nginx/error.log debug;总结
全局配置指令的关键点:
- user:设置运行用户
- worker_processes:设置进程数
- error_log:配置错误日志
- pid:设置PID文件
- worker_rlimit_nofile:限制文件描述符
合理配置全局指令,可以优化Nginx的性能和稳定性。