Nginx 主配置文件是唯一启动入口,位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf,仅定义全局参数、events 块,并通过 include 引入 conf.d/ 和 sites-enabled/ 等目录;站点配置以 server{} 为根结构,存放于 sites-available/ 并通过软链启用,conf.d/ 则用于跨站点复用的通用片段。
Nginx 通过清晰的目录分工和 `include` 指令机制,天然区分主配置文件与各站点的独立配置文件。关键不在文件名,而在位置、用途和加载顺序。它位于 /etc/nginx/nginx.conf(包管理安装)或 /usr/local/nginx/conf/nginx.conf(源码编译),是整个服务启动时最先读取的文件。里面不直接写 逻辑,只做三件事:
– 定义全局参数(user、worker_processes、pid、日志路径等)
– 配置 events 块(连接处理模型)
– 在 http 块中用 include 引入其他配置片段,例如:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
这是最常用的站点管理方式,靠符号链接实现“定义”与“启用”分离:
– /etc/nginx/sites-available/:存放所有站点的完整 server 块配置(如 example.com.conf、blog.conf),相当于配置仓库,不被自动加载
– /etc/nginx/sites-enabled/:仅存放指向 sites-available 中对应文件的软链接(如 ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/)
– nginx 启动时只加载 sites-enabled 下的文件,删掉链接即停用站点,无需改内容或注释
这个目录下的 .conf 文件(如 ssl.conf、gzip.conf)通常包含跨站点复用的设置,比如:
– 公共的 SSL 参数
– 统一的 gzip 压缩规则
– 自定义日志格式或错误页
它们被主配置中的 include /etc/nginx/conf.d/*.conf; 加载,作用于所有 server 块,不绑定具体域名或路径
– 是否在 nginx.conf 顶层?是 → 主配置
– 是否以 server { ... } 为根结构,并含 listen / server_name?是 → 站点配置(无论放在 sites-available 还是 conf.d/)
– 是否被 nginx.conf 的 include 显式引入?否 → 不生效
– 是否在 sites-enabled 下有真实文件或有效链接?否 → 该站点未启用