我使用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"); }
}
答案 0 :(得分:4)
您可能需要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("I need no extra escaping here, for example: \r\nblah") }
(来自init_by_lua
部分,"当Nginx主进程(如果有)加载Nginx配置文件时,在全局Lua VM级别运行Lua代码[...] " )