OpenResty auto_ssl过长的lua代码块错误

我正在使用OpenResty,结合nginx从Let's Encrypt自动获取SSL证书。有一个lua函数可以允许某些域。在这个函数中,我有一个正则表达式来白名单我的域名。当我添加一定数量(不知道确切数量)后,我开始遇到这个错误:

nginx:[emerg] too long lua code block,probably missing terminating characters in /usr/local/openresty/nginx/conf/nginx.conf:60.

如果缩小这个字符串,错误就会消失。

虽然不熟悉lua,但这里是范例代码。我有几百个域名要添加在这里。

auto_ssl:set("allow_domain", function(domain)
  return ngx.re.match(domain, "^(domain1.com|domain2.com|domain3.com....)$", "ijo")
end)

我需要事先定义这个字符串,或者在某个地方指定它的长度吗?

编辑 好的,所以我另一种想法。如果我尝试这个,有人看到问题吗?有任何性能问题或lua相关的问题吗?也许有更有效的方法来做到这一点?

auto_ssl:set("allow_domain", function(domain)
  domains = [[
    domain1.com
    domain2.com
    domain3.com
    -- continues up to domain300.com
  ]]
  i, j = string.find(domains, domain)
  return i ~= nil
end)
点赞
用户1922828
用户1922828

OpenResty 允许通过文件加载更复杂的 Lua 代码。https://github.com/openresty/lua-nginx-module#init_by_lua_file 这只是其中一个指令。你可以使用多种方式加载 Lua 代码。这种方式对我有效。

2018-03-12 18:15:52