Hello! 2012/6/14 刘太华 <de...@gmail.com>: > 会提示"nginx: [emerg] unknown directive "set_by_lua"", 而如果我将同样的set_by_lua > 放在http里却可以,文档里的说明是: context: main, server, location, server if, location if 这里的文档和实现都有错误 :P set_by_lua 和 set_by_lua_file 的使用上下文应当是 server, server if, location, location if 在其他上下文中使用都应当是被禁止的。 我已提交了一个补丁修正了这个问题: https://github.com/chaoslawful/lua-nginx-module/commit/81964d5 多谢提醒! > > 问题2,我想set一个变量,是在每个vhost里都有效的,所以我想尽可能的写在mian或者http > context里,是将request_uri赋值给此变量做一个修改,记录然后在log_format里使用这个变量。 > 我将此set_by_lua写在http里,变量是空的,日志打出来那个位置是个空字符。同样的set_by_lua语句写到server > context里就正常显示变量值了。 > 当 set_by_lua 用于 server {} 中时运行在 server-rewrite 阶段。用于更上层的上下文是被禁止的,正如标准的 set 配置指令。 一个建议是把你的这条 set_by_lua 指令(以及其他共享的一些东西)放在一个 common.conf 配置文件中,然后在每个 vhost 对应的 server {} 里面直接 include "conf/common.conf" 一下就可以了。 Best regards, -agentzh