我将 Lua 与 NGINX 一起使用。我的代码有一个名为“rabbitmq.createExchange”的lua方法。我想在 nginx 服务器启动时调用这个方法。
我尝试了以下代码,但失败并出现错误“此处不允许 content_by_lua_block 指令”。有什么解决办法吗?
http{
Run Code Online (Sandbox Code Playgroud)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"); }}
您可能想要init_by_lua_block- 该content_by_lua_block指令专门用于响应特定的location,而init_版本用于启动:
按_lua_块初始化
语法: init_by_lua_block { lua-script }
上下文: http
阶段: 加载配置
与该指令类似
init_by_lua,只是该指令将 Lua 源代码直接内联到一对花括号 ({}) 内,而不是内联到 NGINX 字符串文字中(需要特殊字符转义)。例如,
Run Code Online (Sandbox Code Playgroud)init_by_lua_block { print("I need no extra escaping here, for example: \r\nblah") }
(来自“当 Nginx 主进程(如果有)加载 Nginx 配置文件时,在全局 Lua VM 级别运行 Lua 代码 [...]”init_by_lua部分。 )