Lua-resty-auto-ssl: Guide de mise à niveau

Créé le 1 juil. 2019  ·  11Commentaires  ·  Source: auto-ssl/lua-resty-auto-ssl

Comment mettre à niveau vers la dernière version ? Un guide de mise à niveau disponible ?

Commentaire le plus utile

@bryanus Veuillez essayer ce code :

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

Explication:

Commit https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 a implémenté la nouvelle version de https://github.com/GUI/lua-shell-games pour lua-resty-auto-ssl ici.

Pour résumer, l'API de la fonction shell_execute() a changé (paramètres ainsi que valeurs de retour).

Personnellement, je trouve que le débogage du code Lua dans Nginx est un vrai cauchemar. Peut-être qu'un jour ce sera plus facile.

Tous les 11 commentaires

Je suis également intéressé par plus d'informations sur la façon d'effectuer la mise à niveau de 0.12.0 à 0.13.1.

Est-ce que je lance simplement sudo luarocks install lua-resty-auto-ssl ou est-ce que cela effacera mes configurations/configuration 0.12.0 actuelles ?

Ou est-il plus sûr de mettre à jour le fichier déshydraté comme @ronaldgetz l' a fourni ?

AIT.

j'ai fait la mise à jour de 12 à 13.1, c'est aussi simple que sudo luarocks install lua-resty-auto-ssl et redémarrer openresty avec sudo systemctl restart openresty :)

Merci @aviatrix! Donc, juste pour confirmer qu'il n'a pas écrasé vos configurations nginx ou quoi que ce soit ? J'ai beaucoup de choses à faire dans la mienne.

Je viens de tester l'émission d'un nouveau domaine et je n'ai rencontré aucune erreur. Je ne sais donc pas exactement ce que cela corrige ou si je suis concerné ? Mais je suppose que je devrais quand même mettre à jour...

@bryanus fait toujours des sauvegardes avant de faire quoi que ce soit ! J'ai appris cela à la dure.
Si vous avez des configurations, conservez-les dans le contrôle de version dans un référentiel privé et cp le dossier conf au préalable au cas où.

Cette mise à jour (13.1) corrige la dépréciation du protocole v1 ACME par Let's Encrypt en mettant à jour la dépendance Dehydrated qui est utilisée pour communiquer avec les serveurs Let's Encrypt. Si vous ne mettez pas à jour, vous ne pourrez pas obtenir de nouveaux certificats dans un mois environ.

Merci @aviatrix! Je vais essayer et je ferai un retour ici.

Ouais. J'ai lancé la commande upgrade/install et elle a immédiatement cassé ma configuration lors du redémarrage d'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

Heureusement, c'était sur un serveur intermédiaire, j'essaie donc actuellement de résoudre cette erreur. Des idées @aviatrix? Je me demande si je peux simplement corriger les modifications de ligne et voir si cela continue de fonctionner.

Mise à jour : Donc pour l'instant, j'ai simplement édité le fichier déshydraté directement avec le patch de @ronaldgetz , et tout fonctionne après le redémarrage d'openresty. Il faudra peut-être me retenir pendant que j'essaie de comprendre l'erreur que j'ai eue lors de la mise à niveau complète. J'espère que le patch est "assez bon" ?

@bryanus Utilisez-vous peut-être une fonction personnalisée pour la liste blanche de domaine ? Cette fonction personnalisée peut être le problème car la dernière version de lua-resty-auto-ssl utilise une méthode différente pour transmettre les arguments du shell (par exemple, si vous appelez la commande cat pour charger un fichier texte personnalisé en tant que liste blanche). Les arguments du shell doivent maintenant être une table au lieu d'une chaîne auparavant. Juste une supposition sortie de nulle part, car j'ai également vu ce problème dans un déploiement.

@andreasschroth Waouh ! C'est exactement ce que je fais ! Je mets en liste blanche des domaines à partir d'un fichier texte éternel dans ma configuration :

````
init_by_lua_block {
auto_ssl = (nécessite "resty.auto-ssl").new()
auto_ssl :set ("allow_domain", fonction(domaine)

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

}
````

Faisiez-vous la même chose ? Je suis un peu confus sur la façon de structurer mes commandes shell à transmettre sous forme de table. Je vais devoir creuser plus dans la documentation à ce sujet. Comment avez-vous résolu le vôtre ? Merci beaucoup pour cette astuce !

@bryanus Veuillez essayer ce code :

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

Explication:

Commit https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 a implémenté la nouvelle version de https://github.com/GUI/lua-shell-games pour lua-resty-auto-ssl ici.

Pour résumer, l'API de la fonction shell_execute() a changé (paramètres ainsi que valeurs de retour).

Personnellement, je trouve que le débogage du code Lua dans Nginx est un vrai cauchemar. Peut-être qu'un jour ce sera plus facile.

Merci @andreasschroth. J'examinais la syntaxe du module lua-resty-shell et je me suis dit que cela ne pouvait pas être aussi simple qu'un changement. Merci de prendre le temps de m'aider. Je vais essayer (probablement demain) et je ferai un retour !

Ça marche! Merci pour votre aide @andreasschroth. Je ne savais pas que vous aviez également modifié ma sortie conditionnelle ; plus impliqué que je ne le pensais au départ. Oui, le débogage de Lua dans les configurations nginx est pénible, mais pas si mal avec une aide précieuse ! Acclamations! ;-)

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

serathius picture serathius  ·  21Commentaires

brendon picture brendon  ·  9Commentaires

jmvbxx picture jmvbxx  ·  6Commentaires

discobean picture discobean  ·  8Commentaires

sahildeliwala picture sahildeliwala  ·  16Commentaires