nginx通过在http块中使用include指令引入分散的server配置文件实现virtual host管理,路径须为绝对或以nginx.conf为基准的相对路径,推荐通配符批量引入;各被引入文件必须是完整、语法正确的server块,命名建议按域名区分,并可抽离ssl等通用配置复用;宝塔用户无需修改主配置,直接在指定目录增删.conf文件并重载即可;生效前必须执行nginx -t验证语法、检查权限与端口冲突,必要时用nginx -t查看最终合并配置。

Nginx 中 Virtual Host 使用 include 指令引入分散的站点配置文件,核心是把每个站点的 server 块单独写成独立 .conf 文件,再在主配置的 http 块中统一引入——这样既避免主配置臃肿,又便于增删站点、协同维护。
明确 include 的位置和路径规则
include 必须放在 http 块内(不能在 events 或全局块),才能加载多个 server 块。路径支持绝对路径和相对路径:
- 相对路径以
nginx.conf所在目录为基准。例如nginx.conf在/etc/nginx/nginx.conf,那么include conf.d/*.conf;实际指向/etc/nginx/conf.d/*.conf - 推荐用通配符批量引入,如
include vhost/*.conf;或include /www/server/panel/vhost/nginx/*.conf;(宝塔默认路径) - 每个被 include 的文件必须是一个完整、语法正确的
server块,不能只写location或缺server_name
按规范组织站点配置文件
不建议把所有 server 块堆在一个文件里。标准做法是:
- 为每个域名建一个独立文件,命名清晰,如
blog.example.com.conf、api.example.com.conf - 文件内容以完整
server块开头,包含listen、server_name、root等必要指令 - 可复用的通用逻辑(如 SSL 参数、反向代理头)抽离到单独文件,例如
ssl.conf或proxy.conf,再在各站点文件中用include引入
宝塔面板用户的特别注意点
宝塔已内置这套机制,无需手动改 nginx.conf:
- 站点配置自动存于
/www/server/panel/vhost/nginx/,文件名即域名(如example.com.conf) -
nginx.conf的http块末尾已有include /www/server/panel/vhost/nginx/*.conf; - 你只需在该目录下新增或编辑 .conf 文件,执行
nginx -t && nginx -s reload即可生效 - 修改前建议备份原文件,尤其涉及 SSL 或 proxy_pass 时,一个标点错误就可能让整个站点不可用
验证与排错关键步骤
引入后不是“写了就生效”,务必验证:
- 运行
nginx -t检查语法。报错信息会指出具体哪一行、哪个文件出问题 - 确认文件权限:Nginx 主进程需有读取权限(通常
root:root或www-data:www-data,取决于系统) - 检查是否重复定义:两个
server块监听相同ip:port且server_name冲突,会导致后加载的覆盖前者 - 用
nginx -T查看最终合并后的全部配置(含所有 include 展开结果),方便定位遗漏或覆盖











