include
在 Nginx 中,为了提高配置的可维护性和模块化,通常会将主配置文件(如
nginx.conf)拆分成多个子配置文件。Nginx 提供了include指令来实现这一功能。
基本语法
Nginx 的 include 指令可以加载其他配置文件,语法如下:
nginx
include /path/to/other/nginx.conf;支持通配符,例如:
nginx
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;常见拆分方式
按站点拆分
- 创建目录:
/etc/nginx/sites-available/(存放所有站点配置)- 启用站点:通过软链接到
/etc/nginx/sites-enabled/- 在
nginx.conf中包含启用的站点
nginx
http {
...
include /etc/nginx/sites-enabled/*;
}注:这是 Debian/Ubuntu 系统中常见的做法。
按功能模块拆分
- upstreams.conf:定义
upstream负载均衡组 - security.conf:通用安全头、限速等
- gzip.conf:
Gzip压缩配置 - ssl.conf:
SSL/TLS通用设置
然后在 nginx.conf 中引入:
nginx
http {
...
include /etc/nginx/conf.d/upstreams.conf;
include /etc/nginx/conf.d/security.conf;
include /etc/nginx/conf.d/gzip.conf;
include /etc/nginx/conf.d/ssl.conf;
...
}按环境拆分
虽然不常用,但也可以为不同环境 (开发、测试、生产) 准备不同的主配置文件,再分别
include对应的子配置。
使用 include
1.创建子配置目录
bash
sudo mkdir -p /etc/nginx/conf.d/
sudo mkdir -p /etc/nginx/sites-available/
sudo mkdir -p /etc/nginx/sites-enabled/2.编写站点配置
nginx
# /etc/nginx/sites-available/example.com
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.html;
}3.启用站点
bash
# 创建软链接
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/停用:删除软连接:
sudo rm /etc/nginx/sites-enabled/example.com
⚠️ 启用/停用都必须重启 Nginx 才能生效。
4.在主配置中 include
确保 nginx.conf 中有
nginx
# /etc/nginx/nginx.conf
http {
...
include /etc/nginx/sites-enabled/*;
...
}5.测试并重载
bash
# 测试配置
sudo nginx -t
# 重载 Nginx
sudo systemctl reload nginx注意事项
- 文件顺序:include 加载顺序取决于文件系统排序(通常是字典序),若顺序敏感,建议使用前缀命名(如 00-upstreams.conf, 10-server.conf)。
- 作用域限制:某些指令只能在特定上下文中使用(如 server 块内不能写 upstream),拆分时需注意作用域。
- 避免重复:确保没有重复的 server_name 或监听端口冲突。
- 权限问题:确保 Nginx 有权限读取所有被 include 的文件。
参考
txt
/etc/nginx/
├── nginx.conf # 主配置文件
├── conf.d/ # 功能性配置片段
│ ├── gzip.conf
│ ├── security.conf
│ └── upstreams.conf
├── sites-available/ # 所有站点定义(未启用)
│ ├── example.com
│ └── api.example.com
└── sites-enabled/ # 启用的站点(软链接)
├── example.com -> ../sites-available/example.com
└── api.example.com -> ../sites-available/api.example.com