如何在 NGINX 启动时调用 Lua 方法?

我正在使用 Lua 和 NGINX。我的代码有一个名为 "rabbitmq.createExchange" 的 Lua 方法。我想在 nginx 服务器启动时调用此方法。

我尝试了以下代码,但是我失败了,提示错误 "content_by_lua_block指令不允许在此处"。是否有解决方案?

http {

lua_package_path '/app/nginx/src/?.lua;;';

server {
 listen 4000;
 include 'src/proj1.conf';

}

content_by_lua_block {
  local rabbitmq = require 'src/rabbitmq.lua';
  rabbitmq.createExchange("nginx", "topic");
}

}

点赞
用户148870
用户148870

你可能想要使用 init_by_lua_block - content_by_lua_block 指令特别针对特定的 location 响应,而 init_ 版本是为了启动而设计的:

init_by_lua_block

语法: init_by_lua_block { lua-script }

上下文: http

阶段: loading-config

init_by_lua 指令类似,不同之处在于该指令将 Lua 源码直接嵌入在一对花括号( {})中,而不是在 NGINX 字符串字面量中(需要特殊字符转义)。

例如,

 init_by_lua_block {
     print("我在这里不需要额外的转义,例如:\r\nblah")  }

(来自 init_by_lua 部分的说明,“在 Nginx 主进程(如果有)加载 Nginx 配置文件时,在全局级别上运行 Lua 代码。”)

2017-03-11 05:56:22