Как я могу остановить отказ nginx, когда openresty выдает ошибку времени выполнения при развертывании сертификата

Мы используем 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, поэтому немного возился со своим раундом. Кто-нибудь сталкивался с подобной проблемой?


person Phil Jenkins    schedule 16.05.2019    source источник


Ответы (1)


Оберните все это функцией и вызовите ее с помощью pcall или xpcall и добавьте логику для устранения ошибки.

person DarkWiiPlayer    schedule 16.05.2019