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

Sam*_*gha 3 lua nginx

我将 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';    
Run Code Online (Sandbox Code Playgroud)

}

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

}

Amb*_*ber 6

您可能想要init_by_lua_block- 该content_by_lua_block指令专门用于响应特定的location,而init_版本用于启动:

按_lua_块初始化

语法: init_by_lua_block { lua-script }

上下文: http

阶段: 加载配置

与该指令类似init_by_lua,只是该指令将 Lua 源代码直接内联到一对花括号 ( {}) 内,而不是内联到 NGINX 字符串文字中(需要特殊字符转义)。

例如,

 init_by_lua_block {
     print("I need no extra escaping here, for example: \r\nblah")  }
Run Code Online (Sandbox Code Playgroud)

(来自“当 Nginx 主进程(如果有)加载 Nginx 配置文件时,在全局 Lua VM 级别运行 Lua 代码 [...]”init_by_lua部分。 )