apache通过include指令将路由节点拆为独立配置片段,本质是按职责分离、路径规范、加载顺序可控的切片管理:backends.conf专管后端集群,vhosts-site-a.conf专写虚拟主机,security-rules.conf集中安全策略,统一存放于conf.d/目录并以数字前缀命名确保加载顺序,主配置仅用includeoptional引入,配合软链实现蓝绿发布。

Apache 用 Include 把路由节点拆成独立配置片段,本质是把大配置文件“切片管理”,提升可维护性、避免单文件臃肿、支持自动化发布。关键不是简单拆开,而是按职责分离 + 路径规范 + 加载顺序可控。
按功能或服务拆分配置片段
每个片段专注一类逻辑,比如后端集群定义、虚拟主机、代理规则、安全策略。不混写,不交叉引用(除非必要):
-
backends.conf:只放
<proxybalancer></proxybalancer>和后端节点定义,如balancer://api-v1和balancer://api-v2 -
vhosts-site-a.conf:只写一个
<virtualhost></virtualhost>块,含ServerName、DocumentRoot、ProxyPass -
security-rules.conf:集中放
<location></location>、Require ip、Header set等访问控制与响应头规则
统一存放路径并规范命名
所有片段放在同一目录下(如 /etc/httpd/conf.d/ 或 /etc/apache2/sites-available/),用明确后缀区分用途:
- 以
.conf结尾,确保 Apache 默认加载(多数发行版的主配置已含IncludeOptional conf.d/*.conf) - 命名体现作用域,例如:
001-api-blue.conf、002-api-green.conf、100-main-proxy.conf - 数字前缀控制加载顺序——Apache 按字母序读取,
001-保证蓝环境先于绿环境被识别,避免 balancer 名冲突
主配置中用 Include 引入片段
主配置(如 httpd.conf)只保留核心设置和 Include 指令,不写业务路由:
- 写法示例:
Include conf.d/backends.conf或IncludeOptional sites-enabled/*.conf - 推荐用
IncludeOptional:即使某片段临时缺失也不报错;而Include缺失会直接导致configtest失败 - 避免嵌套
Include过深——单层引入足够,多层嵌套难排查、易循环引用
配合软链实现环境切换
蓝绿发布时无需改内容,只换链接目标,适合 CI/CD 自动化:
- 创建两个物理文件:
backends-blue.conf和backends-green.conf - 建软链:
ln -sf backends-blue.conf /etc/httpd/conf.d/backends-current.conf - 主配置只写:
Include conf.d/backends-current.conf - 上线时只需更新软链指向,并执行
apachectl graceful,新请求立刻走新后端










