Appearance
Nginx配置文件详细注释
全局配置部分
bash
#==工作进程数,一般跟cpu核数相同或为它的倍数
worker_processes auto; # 自动检测CPU核心数并设置工作进程数
worker_rlimit_nofile 102400; # 每个工作进程可以打开的最大文件描述符数量
events {
worker_connections 32767; # 每个工作进程可同时建立的最大连接数
multi_accept on; # 允许一次性接受多个新连接
}HTTP模块全局配置
nginx
http {
access_log off; # 关闭访问日志记录,减少I/O开销
include mime.types; # 包含MIME类型配置文件
default_type application/octet-stream; # 默认MIME类型
# 优化文件传输性能
sendfile on; # 启用零拷贝技术,直接在内核空间传输文件
tcp_nopush on; # 数据包最大化发送,减少网络开销
# 文件上传大小限制
client_max_body_size 500m; # 客户端上传文件最大大小为500MB
# 服务器名称哈希表大小设置
server_names_hash_bucket_size 512; # 允许更长的服务器名称
# 客户端请求头相关设置
client_header_buffer_size 512k; # 请求头缓冲区大小
large_client_header_buffers 4 512k; # 大型请求头缓冲区配置
# FastCGI相关超时设置(用于与PHP、.NET等后端通信)
fastcgi_connect_timeout 1200s; # 连接超时时间
fastcgi_send_timeout 1200s; # 发送请求超时时间
fastcgi_read_timeout 1200s; # 读取响应超时时间
fastcgi_buffer_size 128k; # 缓冲区大小
fastcgi_buffers 8 128k; # 缓冲区数量和大小
fastcgi_busy_buffers_size 128k; # 忙碌缓冲区大小
fastcgi_temp_file_write_size 256k; # 临时文件写入大小
fastcgi_intercept_errors on; # 拦截后端错误
# GZIP压缩配置(当前已关闭)
gzip off; # 关闭GZIP压缩功能
# 下面是被注释的GZIP详细配置
# gzip_min_length 1k; # 最小压缩文件大小
# gzip_buffers 4 16k; # 压缩缓冲区大小
# ...
}
## 上游服务器配置(负载均衡)
```nginx
# 登录API服务器组
upstream szyxLoginApi{
keepalive 300; # 空闲连接池大小
keepalive_timeout 120s; # 空闲连接保持时间
keepalive_requests 10000; # 单个连接可处理的最大请求数
server 127.0.0.1:9999 weight=3; # 后端服务器地址及权重
# 被注释的是其他可用服务器
# server 172.16.154.73:9998 weight=10;
}
# 数字思睿项目API服务器组
upstream dsyxApi{
server 127.0.0.1:9004; # 后端服务器地址
keepalive 300; # 空闲连接池大小
keepalive_timeout 300s; # 空闲连接保持时间
keepalive_requests 500; # 单个连接可处理的最大请求数
}
# 其他各种项目的上游服务器配置...虚拟主机配置(以一个站点为例详细注释)
nginx
# 思睿云学站点配置
server {
listen 80; # 监听80端口
server_name szyx.srzx.com; # 域名
charset utf-8; # 字符集
# 根路径配置,用于前端静态文件
location / {
proxy_http_version 1.1; # 使用HTTP 1.1协议
root C:/SiruiWeb/Szyx/front/dist; # 静态文件根目录
index index.html index.htm; # 默认索引文件
try_files $uri $uri/ /index.html; # 尝试文件查找顺序,支持SPA应用
}
# API请求转发规则,使用正则排除特定路径
location ~ /api(?!/userDock)(?!/overview).* {
proxy_http_version 1.1; # 使用HTTP 1.1协议
proxy_set_header X-Real-IP $remote_addr; # 传递真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递代理链信息
proxy_set_header X-NginX-Proxy true; # 标识是Nginx代理
proxy_pass http://127.0.0.1:9999; # 转发目标服务器
}
# 用户Dock API专用转发规则
location ^~ /api/userDock {
proxy_http_version 1.1; # 使用HTTP 1.1协议
proxy_set_header X-Real-IP $remote_addr; # 设置真实IP头
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 代理链信息
proxy_set_header X-NginX-Proxy true; # Nginx代理标识
proxy_pass http://szyxLoginApi/api/userDock; # 转发到上游服务器组
}
# WebSocket长连接支持
location /ws/ {
proxy_http_version 1.1; # 使用HTTP 1.1协议
proxy_pass http://127.0.0.1:9999; # 后端WebSocket服务地址
proxy_read_timeout 864000s; # 读取超时时间(10天)
proxy_send_timeout 864000s; # 发送超时时间(10天)
proxy_set_header Upgrade $http_upgrade; # WebSocket升级头
proxy_set_header Connection "upgrade"; # 连接升级标识
}
# Nginx状态监控
location /nginx_status {
stub_status on; # 启用状态页面
}
# 错误页面配置
error_page 500 502 503 504 /50x.html; # 定义服务器错误页面
location = /50x.html { # 错误页面位置
root html; # 错误页面目录
}
}HTTPS站点配置示例
nginx
server {
proxy_connect_timeout 600s; # 连接超时时间
proxy_send_timeout 600s; # 发送超时时间
proxy_read_timeout 600s; # 读取超时时间
listen 443 ssl; # 监听443端口并启用SSL
server_name szyx.srzx.com; # 域名
# SSL证书配置
ssl_certificate C:/SiruiTools/nginx-1.26.1/cert/szyx.srzx.com.pem; # 公钥文件
ssl_certificate_key C:/SiruiTools/nginx-1.26.1/cert/szyx.srzx.com.key; # 私钥文件
# SSL会话缓存设置
ssl_session_cache shared:SSL:1m; # 会话缓存大小
ssl_session_timeout 5m; # 会话超时时间
# SSL加密套件和协议设置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 支持的SSL/TLS协议版本
ssl_prefer_server_ciphers on; # 优先使用服务器加密套件
# 其他location配置与HTTP站点类似...
}具有特殊设置的站点示例
nginx
server {
listen 20000; # 非标准端口监听
server_name localhost; # 本地主机名
# 大文件传输相关设置
client_max_body_size 200000M; # 支持200GB的上传文件
client_header_timeout 40m; # 请求头超时时间(40分钟)
client_body_timeout 40m; # 请求体超时时间(40分钟)
client_header_buffer_size 12800k; # 请求头缓冲大小
large_client_header_buffers 100 128k; # 大型请求头缓冲设置
# 代理超时设置
proxy_connect_timeout 1800; # 连接超时(30分钟)
proxy_read_timeout 30m; # 读取超时(30分钟)
proxy_send_timeout 30m; # 发送超时(30分钟)
# 根目录设置
root C:/SiruiWeb/Gjz_Race/front/html/pc/; # 静态文件目录
index index.html index.htm; # 默认索引文件
# GZIP压缩设置(此站点单独启用)
gzip_proxied any; # 对所有代理请求启用压缩
gzip_buffers 4 16k; # 压缩缓冲设置
gzip_comp_level 6; # 压缩级别(1-9)
gzip_min_length 1k; # 最小压缩文件大小
gzip_http_version 1.1; # HTTP版本要求
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png; # 压缩的MIME类型
gzip_vary on; # 添加Vary: Accept-Encoding头
# 各种路由规则配置...
}注意事项
- 这个配置文件包含多个站点,每个站点都有自己的
server块 - 上游服务器配置(
upstream块)用于负载均衡 - 全局设置的超时时间可能会被各个站点的局部设置覆盖
- 大部分站点都设置了WebSocket支持,并且有很长的超时时间
- 文件上传大小限制在不同站点有不同配置,从500MB到200GB不等
- GZIP压缩全局已关闭,但某些特定站点单独启用了
