lighty 的生活

lighty 开发者博客

即将推出的 1.4.x 中的高级配置

我是 moo,lighttpd 新手

正如许多人可能会问:“我如何编写 cond1 AND cond2”?我们在 1.4 中有了答案

我专注于即将发布的 lighttpd 1.4 的配置。我对其进行了许多改进。

最显著的变化之一是嵌套和链式操作,也就是你可能已经知道的“and” / “else”


cond_a {
cond_b {
}
}
else cond_c {
}

cond_b 只有在 cond_a 首先匹配时才会匹配,如果 cond_a 首先匹配,cond_c 将不会匹配。条件检查/修补的顺序与其他编程语言(如 C、Perl、PHP 等)相同。

此外,“用户定义”变量和“include”也已实现。如果你过去常常为每个虚拟主机复制/粘贴许多配置,你现在可以将它们放入子配置文件中,甚至可以使用变量


. in lighttpd.conf
$HTTP[“host”] == “t1.lighttpd.net”{
var.name=“t1”
include “myvhost.conf”
}
$HTTP[“host”] == “t2.lighttpd.net”{
var.name=“t2”
include “myvhost.conf”
}
. in myvhost.conf
server.name = var.name + “.lighttpd.net”
server.document-root = “/mydocroot/” + var.name + “/public_html/”

你还可以使用配置值,例如 server.name + “/...”,甚至使用 env.* 来获取 环境变量

我还实现了(但尚未提交)“include_shell”,它可以解析程序的输出,即时转换一些内容。例如


include “mysub.conf”

  1. compare the above line to the following
    include_shell “/usr/bin/convmimetype /etc/mime.types”
  2. same as mime.assign = array(…)

请注意,以上所有操作都在配置解析时(加载配置时)进行,因此没有性能损失。运行时变量尚未实现。我不知道它应该如何精确实现,也不知道如何避免损害性能。

还有更多改进,例如运行时条件检查的优化,pcre_study 加速正则表达式匹配,新的命令行选项(使用 -h 查看)。

供您参考,在我实现这些功能之前。我本人使用 m4 宏语言来编写配置。它功能强大但丑陋且脏乱,简直就是个无脑游戏。我可以在 m4 中使用变量/include,但无法输出“else”和“and”。但现在我可以在 lighttpd 中单独完成我需要的一切,而无需 m4。

1.4 发布时请查看新闻,或查看 svn :)

请注意,我们不接受发布超过 3 个月的文章评论! 另外,请使用我们的错误追踪器报告错误,并使用我们的 IRC 频道 #lighttpd@libera 进行聊天。

« lighty 标志设计大赛 cygwin 上的 lighttpd »