Skip to content

全局配置指令

全局配置指令影响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.conf

worker_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的性能和稳定性。