Lua-resty-auto-ssl: Руководство по обновлению

Созданный на 1 июл. 2019  ·  11Комментарии  ·  Источник: auto-ssl/lua-resty-auto-ssl

Как обновиться до последней версии? Доступно ли какое-либо руководство по обновлению?

Самый полезный комментарий

@bryanus Пожалуйста, попробуйте этот код:

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

Объяснение:

Коммит https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 реализовал новую версию https://github.com/GUI/lua-shell-games для lua-resty-auto-ssl здесь.

Подводя итог, изменился API функции shell_execute() (параметры, а также возвращаемые значения).

Лично я считаю отладку кода Lua в Nginx настоящим кошмаром. Может быть, когда-нибудь станет легче.

Все 11 Комментарий

Меня также интересует дополнительная информация о том, как выполнить обновление с 0.12.0 до 0.13.1.

Мне просто запустить sudo luarocks install lua-resty-auto-ssl или это сотрет мои текущие настройки/настройки 0.12.0?

Или безопаснее обновить обезвоженный файл, как предоставил @ronaldgetz ?

ТИА.

я сделал обновление с 12 до 13.1, это так же просто, как sudo luarocks install lua-resty-auto-ssl и перезапуск openresty с помощью sudo systemctl restart openresty :)

Спасибо @aviatrix! Итак, просто чтобы подтвердить, что он не перезаписал ваши конфигурации nginx или что-то в этом роде? У меня много чего происходит в моей.

Я только что протестировал выпуск нового домена и не столкнулся с какими-либо ошибками, поэтому я не совсем понимаю, что это исправляет и влияет ли это на меня? Но я думаю, что я должен обновить в любом случае...

@bryanus всегда делает резервные копии, прежде чем что-либо делать! Я усвоил это на собственном горьком опыте.
Если у вас есть конфиги, держите их в системе контроля версий в приватном репозитории и заранее копируйте папку conf на всякий случай.

Это обновление ( 13.1) устраняет устаревший протокол ACME v1 компанией Let's Encrypt путем обновления зависимости Dehydrated , которая используется для связи с серверами Let's Encrypt. Если вы не обновитесь, вы не сможете получить новые сертификаты примерно через месяц.

Спасибо @aviatrix! Я попробую и отчитаюсь здесь.

Угу. Выполнил команду upgrade/install, и она сразу сломала мою установку после перезапуска 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

К счастью, это было на промежуточном сервере, поэтому я сейчас пытаюсь устранить эту ошибку. Есть идеи @aviatrix? Интересно, могу ли я просто исправить изменения в строке и посмотреть, будет ли это работать.

Обновление: на данный момент я просто отредактировал обезвоженный файл непосредственно с помощью патча @ronaldgetz , и после перезапуска openresty все работает. Возможно, придется задержать меня, пока я пытаюсь выяснить ошибку, которую я получил при полном обновлении. Надеюсь, патч "достаточно хорош"?

@bryanus Возможно, вы используете пользовательскую функцию для белого списка доменов? Эта пользовательская функция может быть проблемой, поскольку последний выпуск lua-resty-auto-ssl использует другой способ передачи аргументов оболочки (например, если вы вызываете команду cat для загрузки пользовательского текстового файла в качестве белого списка). Аргументы оболочки теперь должны быть таблицей, а не строкой. Просто предположение из ниоткуда, потому что я видел эту проблему и в одном развертывании.

@andreasschroth Вау! Это именно то, что я делаю! Я вношу домены в белый список из вечного текстового файла в своем конфиге:

````
init_by_lua_block {
auto_ssl = (требуется "resty.auto-ssl").new()
auto_ ssl:set ("allow_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()

}
````

Вы делали то же самое? Я немного запутался в том, как структурировать мои команды оболочки для передачи в виде таблицы. Мне придется больше копаться в документации по этому вопросу. Как вы решили свою? Большое спасибо за этот совет!

@bryanus Пожалуйста, попробуйте этот код:

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

Объяснение:

Коммит https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 реализовал новую версию https://github.com/GUI/lua-shell-games для lua-resty-auto-ssl здесь.

Подводя итог, изменился API функции shell_execute() (параметры, а также возвращаемые значения).

Лично я считаю отладку кода Lua в Nginx настоящим кошмаром. Может быть, когда-нибудь станет легче.

Спасибо @andreasschroth. Я просматривал синтаксис модуля lua-resty-shell и понял, что это не может быть так просто. Спасибо, что нашли время, чтобы помочь мне. Попробую (скорее всего завтра) и отчитаюсь!

Оно работает! Спасибо за вашу помощь @andreasschroth. Я не знал, что вы также изменили мой условный вывод; более вовлеченным, чем я сначала думал. Да, отладка Lua в конфигах nginx болезненна, но не так уж и плоха с отличной помощью! Ваше здоровье! ;-)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

sahildeliwala picture sahildeliwala  ·  16Комментарии

domharrington picture domharrington  ·  7Комментарии

ronaldgrn picture ronaldgrn  ·  8Комментарии

stackrainbow picture stackrainbow  ·  20Комментарии

jasonbouffard picture jasonbouffard  ·  6Комментарии