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

时间:2017-03-11 05:51:02

标签: 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");
} 
     

}

1 个答案:

答案 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代码[...] "