Lua-resty-auto-ssl: 升级指南

创建于 2019-07-01  ·  11评论  ·  资料来源: auto-ssl/lua-resty-auto-ssl

如何升级到最新版本? 有可用的升级指南吗?

最有用的评论

@bryanus请尝试以下代码:

init_by_lua_block {
    auto_ssl = (require "resty.auto-ssl").new()
    auto_ssl:set("allow_domain", function(domain)

    -- reading from domains.txt and in testing

    local shell_execute = require "resty.auto-ssl.utils.shell_execute"
    local ngx_re = require "ngx.re"
    local result, err = shell_execute({"cat", "/home/user/domains.txt"})

    if err then
      ngx.log(ngx.ERR, "allow_domain cat error: ", err)
    else
      local domains = ngx_re.split(result["output"], "\n")
      for _, d in ipairs(domains) do
        if (domain == d) then
          return true
        end
      end
    end

    return false

    end)
    auto_ssl:set("renew_check_interval", 43200)
    auto_ssl:init()
  }

解释:

提交https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332为 lua-resty-auto-ssl 实现新版本https://github.com/GUI/lua-shell-games这里。

总而言之,函数shell_execute()的 API 发生了变化(参数和返回值)。

就个人而言,我发现在 Nginx 中调试 Lua 代码是一场噩梦。 也许有一天会更容易。

所有11条评论

我还对有关如何从 0.12.0 升级到 0.13.1 的更多信息感兴趣。

我只是运行sudo luarocks install lua-resty-auto-ssl还是会清除我当前的 0.12.0 配置/设置?

还是像@ronaldgetz提供的那样更新脱水文件更安全?

TIA。

我已经完成了从 12 到 13.1 的升级,就像sudo luarocks install lua-resty-auto-ssl一样简单,然后用sudo systemctl restart openresty重新启动 openresty :)

谢谢@aviatrix! 所以,只是为了确认它没有覆盖你的 nginx 配置或任何东西? 我有很多事情要做。

我刚刚测试了发布一个新域,并没有遇到任何错误,所以我不完全清楚这个修复是什么,或者我是否受到影响? 但是我想我还是应该升级...

@bryanus总是在做任何事情之前进行备份! 我已经学会了这个艰难的方式。
如果您有配置,请将它们保存在私有 repo 中的版本控制中,并事先 cp conf 文件夹以防万一。

此更新 (13.1) 通过更新用于与 Let's Encrypt 服务器通信的依赖项Dehydrated来解决 Let's Encrypt 弃用 v1 ACME 协议的问题。 如果您不更新,您将无法在一个月左右的时间内获得新证书。

谢谢@aviatrix! 我会试一试,然后在这里报告。

哎呀。 运行升级/安装命令,它在重新启动 openresty 后立即破坏了我的设置:

2019/11/08 21:06:23 [error] 2973#2973: *113 [lua] ssl_certificate.lua:310: ssl_certificate(): auto-ssl: failed to run do_ssl: /usr/local/openresty/luajit/share/lua/5.1/shell-games.lua:233: bad argument #1 (table expected, got string), context: ssl_certificate_by_lua*, client: 103.3.244.23, server: 0.0.0.0:443

幸运的是,这是在临时服务器上,所以我目前正在尝试解决此错误。 任何想法@aviatrix? 我想知道我是否可以只修补行编辑,看看是否能保持工作正常。

更新:所以现在,我只是用@ronaldgetz的补丁直接编辑了脱水文件,重启openresty后一切正常。 在我尝试找出进行完整升级时遇到的错误时,可能不得不阻止我。 希望补丁“足够好”?

@bryanus您是否可以为域白名单使用自定义功能? 这个自定义函数可能是问题,因为最新版本的 lua-resty-auto-ssl 使用不同的方式来传递 shell 参数(例如,如果您调用 cat 命令将自定义文本文件加载为白名单)。 shell 参数现在需要是一个表而不是之前的字符串。 只是凭空猜测,因为我在一次部署中也看到了这个问题。

@andreasschroth哇! 这正是我正在做的! 我正在将配置中的永久文本文件中的域列入白名单:

````
init_by_lua_block {
auto_ssl = (需要 "resty.auto-ssl").new()
auto_ssl :set ("allow_domain", function(domain)

-- reading from domains.txt and in testing

local shell_execute = require "resty.auto-ssl.utils.shell_execute"
local ngx_re = require "ngx.re"
local status, output, err = shell_execute("cat /home/user/domains.txt")

if err then
  ngx.log(ngx.ERR, "allow_domain cat error: ", err)
else
  local domains = ngx_re.split(output, "\n")
  for _, d in ipairs(domains) do
    if (domain == d) then
      return true
    end
  end
end

return false

end)
auto_ssl:set("renew_check_interval", 43200)
auto_ssl:init()

}
````

你在做同样的事情吗? 我对如何构建要作为表格传递的 shell 命令感到有些困惑。 我将不得不深入研究有关此的文档。 你是怎么解决你的? 非常感谢这个提示!

@bryanus请尝试以下代码:

init_by_lua_block {
    auto_ssl = (require "resty.auto-ssl").new()
    auto_ssl:set("allow_domain", function(domain)

    -- reading from domains.txt and in testing

    local shell_execute = require "resty.auto-ssl.utils.shell_execute"
    local ngx_re = require "ngx.re"
    local result, err = shell_execute({"cat", "/home/user/domains.txt"})

    if err then
      ngx.log(ngx.ERR, "allow_domain cat error: ", err)
    else
      local domains = ngx_re.split(result["output"], "\n")
      for _, d in ipairs(domains) do
        if (domain == d) then
          return true
        end
      end
    end

    return false

    end)
    auto_ssl:set("renew_check_interval", 43200)
    auto_ssl:init()
  }

解释:

提交https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332为 lua-resty-auto-ssl 实现新版本https://github.com/GUI/lua-shell-games这里。

总而言之,函数shell_execute()的 API 发生了变化(参数和返回值)。

就个人而言,我发现在 Nginx 中调试 Lua 代码是一场噩梦。 也许有一天会更容易。

谢谢@andreasschroth。 我正在审查 lua-resty-shell 模块的语法,并认为它不可能是那么简单的改变。 感谢您花时间帮助我。 我会试一试(可能明天)并报告!

有用! 感谢您的帮助@andreasschroth。 我没有意识到你也修改了我的条件输出; 比我最初想象的更多。 是的,在 nginx 配置中调试 Lua 是很痛苦的,但有了一些很大的帮助,还不错! 干杯! ;-)

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

sahildeliwala picture sahildeliwala  ·  16评论

ronaldgrn picture ronaldgrn  ·  8评论

discobean picture discobean  ·  8评论

jmvbxx picture jmvbxx  ·  6评论

stackrainbow picture stackrainbow  ·  20评论