Lua-resty-auto-ssl: Guia de atualização

Criado em 1 jul. 2019  ·  11Comentários  ·  Fonte: auto-ssl/lua-resty-auto-ssl

Como atualizar para a versão mais recente? Algum guia de atualização disponível?

Comentários muito úteis

@bryanus Por favor, tente este código:

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()
  }

Explicação:

Commit https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 implementou a nova versão de https://github.com/GUI/lua-shell-games para lua-resty-auto-ssl aqui.

Para resumir, a API da função shell_execute() mudou (parâmetros e valores de retorno).

Pessoalmente, acho que depurar código Lua no Nginx é um pesadelo. Talvez um dia seja mais fácil.

Todos 11 comentários

Também estou interessado em mais algumas informações sobre como realizar a atualização de 0.12.0 para 0.13.1.

Eu apenas executo sudo luarocks install lua-resty-auto-ssl ou isso eliminará minhas configurações/configurações 0.12.0 atuais?

Ou é mais seguro atualizar o arquivo desidratado como o @ronaldgetz forneceu ?

TIA.

eu fiz a atualização de 12 para 13.1, é tão simples quanto sudo luarocks install lua-resty-auto-ssl e reiniciando o openresty com sudo systemctl restart openresty :)

Obrigado @aviatrix! Então, apenas para confirmar que não substituiu suas configurações do nginx ou algo assim? Eu tenho muita coisa acontecendo no meu.

Acabei de testar a emissão de um novo domínio e não encontrei nenhum erro, então não estou totalmente claro sobre o que isso corrige ou se sou afetado? Mas acho que devo atualizar mesmo assim...

@bryanus sempre faz backups antes de fazer qualquer coisa! Eu aprendi isso da maneira mais difícil.
Se você tiver configs, mantenha-os no controle de versão em um repositório privado e cp na pasta conf com antecedência apenas por precaução.

Esta atualização ( 13.1) aborda a descontinuação do protocolo v1 ACME pela Let's Encrypt atualizando a dependência Dehydrated que é usada para se comunicar com os servidores Let's Encrypt. Se você não atualizar, não poderá obter novos certificados em cerca de um mês.

Obrigado @aviatrix! Vou dar uma chance e volto aqui para contar.

Caramba. Executei o comando upgrade/install e imediatamente quebrou minha configuração ao reiniciar o 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

Felizmente, isso estava em um servidor de teste, então estou tentando solucionar esse erro. Alguma ideia @aviatrix? Gostaria de saber se posso apenas corrigir as edições de linha e ver se isso mantém as coisas funcionando.

Atualização: Então, por enquanto, simplesmente editei o arquivo desidratado diretamente com o patch do @ronaldgetz e tudo está funcionando após reiniciar o openresty. Pode ter que me segurar enquanto tento descobrir o erro que recebi ao fazer a atualização completa. Espero que o patch seja "bom o suficiente"?

@bryanus Você talvez use uma função personalizada para a lista de permissões de domínio? Esta função customizada pode ser o problema já que a última versão de lua-resty-auto-ssl usa uma maneira diferente de passar argumentos de shell (por exemplo, se você chamar o comando cat para carregar um arquivo de texto customizado como whitelist). Os argumentos do shell agora precisam ser uma tabela em vez de uma string antes. Apenas um palpite do nada, porque vi esse problema também em uma implantação.

@andreaschroth Uau! É exatamente isso que estou fazendo! Estou colocando domínios na lista de permissões de um arquivo de texto eterno na minha configuração:

````
init_by_lua_block {
auto_ssl = (requer "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()

}
````

Você estava fazendo a mesma coisa? Estou um pouco confuso sobre como estruturar meus comandos do shell para serem passados ​​como uma tabela. Vou ter que cavar mais na documentação sobre isso. Como você resolveu o seu? Muito obrigado por essa dica!

@bryanus Por favor, tente este código:

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()
  }

Explicação:

Commit https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 implementou a nova versão de https://github.com/GUI/lua-shell-games para lua-resty-auto-ssl aqui.

Para resumir, a API da função shell_execute() mudou (parâmetros e valores de retorno).

Pessoalmente, acho que depurar código Lua no Nginx é um pesadelo. Talvez um dia seja mais fácil.

Obrigado @andreaschroth. Eu estava revisando a sintaxe do módulo lua-resty-shell e percebi que não poderia ser uma mudança tão simples. Obrigado por tomar o tempo para me ajudar. Vou tentar (provavelmente amanhã) e dou um retorno!

Funciona! Obrigado pela ajuda @andreasschroth. Eu não sabia que você também modificou minha saída condicional; mais envolvido do que eu pensava. Sim, depurar Lua nas configurações do nginx é doloroso, mas não tão ruim com uma grande ajuda! Saúde! ;-)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ronaldgrn picture ronaldgrn  ·  8Comentários

jasonbouffard picture jasonbouffard  ·  6Comentários

jmvbxx picture jmvbxx  ·  6Comentários

brendon picture brendon  ·  9Comentários

discobean picture discobean  ·  8Comentários