以下是一个完整的 Nginx 配置文件示例,包含主要可配置项的详细注释、常见可选值说明及表格总结。Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf
或 /usr/local/nginx/conf/nginx.conf
。
📄 完整 Nginx 配置文件示例(含详细注释)
# 全局块:影响 Nginx 全局行为
user nginx; # 运行 Nginx 的用户,默认为 nobody
worker_processes auto; # 工作进程数,一般设为 CPU 核心数或 auto
error_log /var/log/nginx/error.log notice; # 错误日志路径及级别(debug/info/notice/warning/error/crit/emerg)
pid /var/run/nginx.pid; # PID 文件路径
# events 块:控制连接处理相关参数
events {
worker_connections 1024; # 每个 worker 进程最大连接数
use epoll; # 使用的事件模型(epoll/kqueue/select/poll),Linux 推荐 epoll
multi_accept on; # 是否允许一次接受多个连接
}
# http 块:HTTP 协议相关配置
http {
include /etc/nginx/mime.types; # 引入 MIME 类型定义文件
default_type application/octet-stream; # 默认 MIME 类型
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; # 启用高效文件传输模式(sendfile)
tcp_nopush on; # 禁止小数据包发送优化
tcp_nodelay on; # 禁止 Nagle 算法,提升响应速度
keepalive_timeout 65; # Keep-Alive 超时时间(秒)
types_hash_max_size 2048; # 控制 types 块的最大哈希表大小
gzip on; # 启用 Gzip 压缩
gzip_types text/plain application/xml application/json; # 可压缩的 MIME 类型
gzip_min_length 1024; # 最小压缩文件大小(字节)
gzip_comp_level 6; # 压缩级别(1~9)
server_tokens off; # 不在响应头中显示版本号
# server 块:虚拟主机配置
server {
listen 80; # 监听端口
server_name example.com www.example.com; # 域名绑定
# location 块:URL 匹配规则
location / {
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 默认首页文件
try_files $uri $uri/ =404; # 文件不存在时返回 404
}
# 静态资源缓存设置
location ~ \.(gif|jpg|png|css|js)$ {
expires 30d; # 缓存时间
add_header Cache-Control "public"; # 添加缓存控制头
}
# 反向代理配置
location /api/ {
proxy_pass http://backend_server; # 代理到后端服务
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# upstream 块:负载均衡配置
upstream backend_server {
least_conn; # 负载均衡算法(round-robin/least_conn/ip_hash/hash)
server 127.0.0.1:3000 weight=3; # 权重分配
server 127.0.0.1:3001;
server 127.0.0.1:3002 backup; # 备用服务器
}
# SSL/TLS 配置示例
server {
listen 443 ssl;
server_name secure.example.com;
ssl_certificate /etc/nginx/ssl/example.crt; # SSL 证书路径
ssl_certificate_key /etc/nginx/ssl/example.key; # 私钥路径
ssl_protocols TLSv1.2 TLSv1.3; # 支持的协议版本
ssl_ciphers HIGH:!aNULL:!MD5; # 加密套件
}
}
🧾 配置项详解与可选值对比表
配置项 | 作用 | 可选值/说明 |
---|---|---|
user | 指定运行 Nginx 的用户 | 如 nginx , www-data 等 |
worker_processes | 设置工作进程数量 | 数字(如 4 )或 auto |
error_log | 错误日志路径和级别 | 级别包括 debug , info , notice , warning , error , crit , emerg |
pid | PID 文件路径 | 如 /var/run/nginx.pid |
use | 指定事件模型 | epoll , kqueue , select , poll (Linux 推荐 epoll ) |
multi_accept | 是否一次性接受所有连接 | on / off |
worker_connections | 每个工作进程最大连接数 | 如 1024 |
log_format | 自定义日志格式 | 支持变量如 $remote_addr , $request , $status 等 |
access_log | 访问日志路径及格式 | 可关闭 off |
sendfile | 是否启用 sendfile | on / off |
tcp_nopush | 是否启用 TCP_NOPUSH | on / off |
tcp_nodelay | 是否启用 Nagle 算法 | on / off |
keepalive_timeout | Keep-Alive 超时时间 | 单位为秒 |
gzip | 是否启用 Gzip 压缩 | on / off |
gzip_types | 可压缩的 MIME 类型 | 如 text/plain , application/json |
gzip_min_length | 最小压缩文件大小 | 单位为字节 |
gzip_comp_level | 压缩级别 | 1~9,数值越大压缩率越高但性能越低 |
server_tokens | 是否显示版本号 | on / off |
listen | 监听端口 | 如 80 , 443 ssl |
server_name | 绑定域名 | 可使用通配符如 *.example.com |
root | 网站根目录 | 如 /usr/share/nginx/html |
index | 默认首页文件 | 如 index.html , default.php |
try_files | 尝试访问文件路径 | 如 $uri $uri/ =404 |
expires | 设置缓存过期时间 | 如 30d , 1h |
add_header | 添加自定义 HTTP 头 | 如 Cache-Control public |
proxy_pass | 反向代理地址 | 如 http://127.0.0.1:3000 |
proxy_set_header | 设置代理请求头 | 如 Host $host |
upstream | 负载均衡后端 | 支持 round-robin , least_conn , ip_hash , hash |
ssl_certificate | SSL 证书路径 | 如 /etc/nginx/ssl/example.crt |
ssl_certificate_key | SSL 私钥路径 | 如 /etc/nginx/ssl/example.key |
ssl_protocols | 支持的 SSL/TLS 协议 | 如 TLSv1.2 TLSv1.3 |
ssl_ciphers | 加密套件 | 如 HIGH:!aNULL:!MD5 |
✅ 总结
Nginx 配置灵活且功能丰富,上述配置覆盖了常见的 Web 服务器需求,包括静态资源服务、反向代理、负载均衡、SSL 支持等。实际部署中可根据业务需求调整各项参数,特别是性能相关的如 worker_processes
, worker_connections
, gzip
设置等。