一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 如何使用 include 配置批量引入不同站点的静态资源定义

时间:2026-09-03 07:48:47 编辑:袖梨 来源:一聚教程网

Nginx通过include批量引入站点静态资源定义,即将各站点location规则拆为独立.conf文件并被server块包含,实现配置复用与按站维护。

Nginx 用 include 批量引入不同站点的静态资源定义,核心是把每个站点的静态路径规则拆成独立文件,再统一被主配置加载。这样做既避免重复写 location,又方便按站点增删维护。

按站点分离静态资源配置文件

每个站点对应一个 .conf 文件(比如 site-a.com.static.conf),内容只写它自己的 location 块和 root/alias 设置,不包含 serverhttp 等外层结构。例如:

# /etc/nginx/conf.d/static/site-a.com.conflocation /static/ {alias /var/www/site-a/assets/;}location /uploads/ {alias /var/www/site-a/uploads/;}
# /etc/nginx/conf.d/static/site-b.net.conflocation /static/ {alias /var/www/site-b/public/;}location /media/ {alias /var/www/site-b/media/;}

这些文件必须放在 server 块内部才能生效,所以它们不能单独运行,而是被 include 进某个 server 块里。

在对应 server 块中 include 这些片段

打开该站点的主配置文件(如 /etc/nginx/conf.d/sites-enabled/site-a.com.conf),确保它是一个完整的 server { ... } 块,并在其中合适位置(通常在 location / 之后、error_page 之前)加入:

include /etc/nginx/conf.d/static/site-a.com.conf;

这样 Nginx 启动时会把那段内容原样插入进去,等价于手动复制粘贴。

批量引入多个站点的静态定义

如果你有十几个站点,不想每个都手写一行 include,可以用通配符一次性加载:

# 在某个 server 块内(注意:不是 http 块!)include /etc/nginx/conf.d/static/*.conf;

但要注意:这种方式要求所有被 include 的文件语义上都适用于当前 server 上下文。如果某些文件含 location /api/ 而另一些含 location /blog/,没问题;但如果混入了 upstreammap 指令,就会报错——因为 include 只允许出现在当前上下文支持的指令范围内。

目录结构建议

/etc/nginx/├── nginx.conf# 主文件,只 include http 块├── conf.d/│ ├── sites-enabled/│ │ └── site-a.com.conf # 完整 server 块,含 include static 片段│ └── static/│ ├── site-a.com.conf│ ├── site-b.net.conf│ └── common-assets.conf# 公共静态规则也可抽出来

验证与 reload

改完后执行:

nginx -t# 检查语法是否正确nginx -s reload# 重载配置

只要路径写对、上下文匹配、权限可读,就能生效。不需要重启整个服务。

不复杂但容易忽略细节

热门栏目