如何升级到最新版本? 有可用的升级指南吗?
我还对有关如何从 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 是很痛苦的,但有了一些很大的帮助,还不错! 干杯! ;-)
最有用的评论
@bryanus请尝试以下代码:
解释:
提交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 代码是一场噩梦。 也许有一天会更容易。