如何在 openresty 抛出运行时错误部署证书时阻止 nginx 失败

我们正在使用 openresty 和 lua-resty-auto-ssl 包从 Lets Encrypt 生成证书,但最近服务器一直出现故障。我猜想当证书尝试自动更新时触发该错误,因为第一次生成证书时运行良好... 我们看到的错误信息是

2019/05/12 08:25:24 [error] 2623#2623: *1024227 lua entry thread aborted: runtime error: ...sty/luajit/share/lua/5.1/resty/auto-ssl/servers/hook.lua:40: assertion failed!
stack traceback:
coroutine 0:
    [C]: in function 'assert'
        ...sty/luajit/share/lua/5.1/resty/auto-ssl/servers/hook.lua:40: in function 'server'
        .../local/openresty/luajit/share/lua/5.1/resty/auto-ssl.lua:99: in function 'hook_server'
        content_by_lua(nginx.conf:194):2: in function <content_by_lua(nginx.conf:194):1>, client: 127.0.0.1, server: , request: "POST /deploy-cert HTTP/1.1", host: "127.0.0.1:8999"

从错误信息中看到,尝试部署证书时无法断言某些内容,如下面的 4 个部分之一

assert(params["domain"])
assert(params["fullchain"])
assert(params["privkey"])
assert(params["expiry"])

我有点不知道该怎么办,服务器一直出错没有任何用处。那是服务器在离线之前报告的最后一个错误,所以我猜那就是原因吗?但不是 100% 确定。

是否有任何地方可以查看有关崩溃原因的更多信息。我是新手,对 nginx / openresty 还有些摸不清楚。是否有人遇到过类似的问题?

点赞
用户4984564
用户4984564

将其全部封装在一个函数中,使用 pcallxpcall 调用,并添加一些逻辑以处理错误。

2019-05-16 12:43:15