Nginx 配置

type
status
date
slug
summary
tags
category
icon
password

一、全局配置

  • 指定 Nginx 工作进程的用户身份(通常为 nobodynginx)。
  • ⚠️ 如果使用 root,安全风险较大。
  • 指定工作进程数量。
  • 推荐设置为:
    • worker_processes auto; (自动使用 CPU 核心数)
    • CPU 核心数,部分场景可设置为 核心数 × 2
  • 指定 Nginx 主进程 PID 文件路径

二、日志配置

  • 错误日志路径及级别。
  • 日志级别(从低到高)
    • debug 调试信息
    • info 一般信息
    • notice 提醒信息
    • warn 警告
    • error 错误
    • crit 严重错误
    • alert 警报
    • emerg 系统不可用
  • ⚠️ 日志级别过低(如 debug)会占用硬盘和 I/O,生产环境建议 errorwarn
  • 自定义日志格式:
    • $remote_addr:客户端 IP
    • $remote_user:认证的用户
    • $time_local:访问时间
    • $request:请求信息(方法、路径、HTTP 协议)
    • $status:响应状态码(200、404、502…)
    • $body_bytes_sent:响应字节数
    • $http_referer:请求来源(上一个页面)
    • $http_user_agent:浏览器和操作系统
    • $http_x_forwarded_for:代理转发的真实 IP
  • 启用访问日志,使用 main 格式。

三、事件模块

  • use epoll:指定 I/O 多路复用模型(Linux 默认使用 epoll,BSD 系统用 kqueue)。
  • worker_connections:每个 worker 最大连接数,决定并发量。
    • 最大并发数 ≈ worker_processes × worker_connections
    • 实际并发数受内核参数限制,如 ulimit -n 文件句柄数。

四、HTTP 模块

  • mime.types:定义文件扩展名与 MIME 类型的对应关系。
  • default_type:默认类型(二进制流),即未识别文件一律按下载处理。

日志

见上文 log_format。

文件传输优化

  • sendfile on:开启零拷贝,提高传输效率。
  • tcp_nopush:与 sendfile 配合,减少 TCP 包数量。

连接优化

  • keepalive_timeout:长连接保持时间(秒),超过会断开。
  • keepalive_requests:一个长连接能承载的最大请求数。

压缩

  • 启用 Gzip 压缩,减少带宽。
  • ⚠️ 静态资源通常交由 CDN 缓存,可以在 CDN 层开启压缩。

五、虚拟主机(server)

  • listen:监听端口。
  • server_name:主机名(域名)。
  • location /:匹配所有请求,返回默认页面。
  • root:站点根目录。
  • index:默认首页文件。

六、虚拟主机类型

  1. 基于名称:不同 server_name 共享同一 IP(常见方式)。
  1. 基于 IP 地址:不同虚拟主机绑定不同 IP。

七、常用操作

  • 创建 Nginx 安装目录。

八、补充知识点

  1. 并发计算公式
    1. worker_processes=2worker_connections=1024,最大并发 ≈ 2048。
  1. 状态码常见解析
      • 200:成功
      • 301/302/304:重定向
      • 403:无权限
      • 404:未找到
      • 500:服务器错误
      • 502:网关错误(后端无响应)
      • 503:服务不可用(资源不足/后端宕机)
  1. 日志调试技巧
      • 开发调试时可开 infodebug
      • 生产环境推荐 errorwarn

👉 总结:
Nginx 配置主要分为 全局 → 事件 → HTTP → Server → Location 五个层次。合理设置 worker 数量、连接数、日志级别和缓存策略,能显著提升性能与安全性。

九、Nginx 完整配置(附)

1、Nginx配置文件

2、虚拟主机类型

基于名称的[server_name]
基于IP地址的[不同的IP地址]
 
Loading...