用 m4 宏让 OpenBSD httpd.conf 告别重复:Repeating Ourselves Less
来源: nemin.hu — 2026-08-17
概述
一篇实操指南,介绍如何用 POSIX 自带的 m4 宏处理器来缩短 OpenBSD httpd.conf 配置。作者把重复的恶意路径拦截块、ACME、TLS、HTTP 头等整理成宏,最终整个多站点配置缩成几行 SITE(域名) 调用。文章先简明讲解宏的概念(AST 宏与文本展开宏的区别)与 m4 的 divert/define/dnl 等用法,再一步步重构配置,并记录了一个坑:m4 会递归展开并把字符串中的逗号误当参数分隔符,需要用 sed 把占位符替换回逗号来规避。
核心要点
- m4 是独立的文本预处理宏工具,随 OpenBSD 自带
- define、divert、dnl 可把重复配置块整理成可复用宏
- 宏可引用其他宏,实现嵌套组合,整个站点缩成 SITE(域名)
- 坑:m4 把字符串中的逗号误当参数分隔符
- 解法:先用占位符替换逗号,再用 sed 还原
- 改一处宏定义即可全局更新所有站点的配置
金句
只要改动宏定义一处,就能重新生成所有站点的配置。
👍 0
👎 0
返回 Lobsters 首页