Lua-resty-auto-ssl: Guía de actualización

Creado en 1 jul. 2019  ·  11Comentarios  ·  Fuente: auto-ssl/lua-resty-auto-ssl

¿Cómo actualizar a la última versión? ¿Alguna guía de actualización disponible?

Comentario más útil

@bryanus Por favor, prueba 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()
  }

Explicación:

Commit https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 implementó la nueva versión de https://github.com/GUI/lua-shell-games para lua-resty-auto-ssl aquí.

En resumen, la API de la función shell_execute() cambió (tanto los parámetros como los valores devueltos).

Personalmente, encuentro que depurar el código Lua en Nginx es una pesadilla. Quizás algún día sea más fácil.

Todos 11 comentarios

También estoy interesado en obtener más información sobre cómo realizar la actualización de 0.12.0 a 0.13.1.

¿Simplemente ejecuto sudo luarocks install lua-resty-auto-ssl o eso eliminará mis configuraciones/instalaciones actuales de 0.12.0?

¿O es más seguro actualizar el archivo deshidratado como lo ha proporcionado @ronaldgetz ?

TIA.

Hice la actualización de 12 a 13.1, es tan simple como sudo luarocks install lua-resty-auto-ssl y reiniciar openresty con sudo systemctl restart openresty :)

Gracias @aviatrix! Entonces, ¿solo para confirmar que no sobrescribió sus configuraciones nginx ni nada? Tengo mucho que hacer en la mía.

Acabo de probar la emisión de un nuevo dominio y no encontré ningún error, por lo que no tengo muy claro qué soluciona esto o si estoy afectado. Pero supongo que debería actualizar de todos modos...

¡@bryanus siempre hace copias de seguridad antes de hacer nada! He aprendido esto de la manera difícil.
Si tiene configuraciones, manténgalas en el control de versiones en un repositorio privado y cp la carpeta conf de antemano por si acaso.

Esta actualización (13.1) soluciona la desaprobación del protocolo ACME v1 por parte de Let's Encrypt al actualizar la dependencia Dehydrated que se usa para comunicarse con los servidores de Let's Encrypt. Si no actualiza, no podrá obtener nuevos certificados en aproximadamente un mes.

Gracias @aviatrix! Lo intentaré y reportaré aquí.

¡Ay! Ejecuté el comando de actualización/instalación e inmediatamente rompió mi configuración al reiniciar 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

Afortunadamente, esto estaba en un servidor de prueba, por lo que actualmente estoy tratando de solucionar este error. ¿Alguna idea @aviatrix? Me pregunto si puedo parchear las ediciones de línea y ver si eso mantiene las cosas funcionando.

Actualización: por ahora, simplemente edité el archivo deshidratado directamente con el parche de @ronaldgetz , y todo funciona después de reiniciar openresty. Es posible que tenga que detenerme mientras trato de averiguar el error que obtuve al realizar la actualización completa. ¿Es de esperar que el parche sea "lo suficientemente bueno"?

@bryanus ¿Quizás usa una función personalizada para la lista blanca de dominios? Esta función personalizada podría ser el problema, ya que la última versión de lua-resty-auto-ssl utiliza una forma diferente de pasar argumentos de shell (por ejemplo, si llama al comando cat para cargar un archivo de texto personalizado como lista blanca). Los argumentos de shell ahora deben ser una tabla en lugar de una cadena antes. Solo una suposición de la nada, porque también vi ese problema en una implementación.

@andreasschroth Guau! ¡Eso es exactamente lo que estoy haciendo! Estoy en la lista blanca de dominios de un archivo de texto eterno en mi configuración:

````
init_by_lua_block {
auto_ssl = (requiere "resty.auto-ssl").nuevo()
auto_ ssl:set ("permitir_dominio", función(dominio)

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

}
````

¿Estabas haciendo lo mismo? Estoy un poco confundido sobre cómo estructurar mis comandos de shell para que se pasen como una tabla. Tendré que profundizar más en la documentación sobre esto. ¿Cómo resolviste el tuyo? ¡Muchas gracias por este consejo!

@bryanus Por favor, prueba 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()
  }

Explicación:

Commit https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 implementó la nueva versión de https://github.com/GUI/lua-shell-games para lua-resty-auto-ssl aquí.

En resumen, la API de la función shell_execute() cambió (tanto los parámetros como los valores devueltos).

Personalmente, encuentro que depurar el código Lua en Nginx es una pesadilla. Quizás algún día sea más fácil.

Gracias @andreasschroth. Estaba revisando la sintaxis del módulo lua-resty-shell y pensé que no podía ser un cambio tan simple. Gracias por tomarte el tiempo para ayudarme. ¡Lo intentaré (probablemente mañana) e informaré!

¡Funciona! Gracias por tu ayuda @andreasschroth. No me di cuenta de que también modificaste mi salida condicional; más involucrado de lo que pensé al principio. Sí, depurar Lua en configuraciones nginx es doloroso, ¡pero no tan malo con una gran ayuda! ¡Salud! ;-)

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

domharrington picture domharrington  ·  7Comentarios

brendon picture brendon  ·  9Comentarios

jasonbouffard picture jasonbouffard  ·  6Comentarios

discobean picture discobean  ·  8Comentarios

danDanV1 picture danDanV1  ·  7Comentarios