Lua-resty-auto-ssl: allow_domain частота звонков

Созданный на 6 окт. 2017  ·  6Комментарии  ·  Источник: auto-ssl/lua-resty-auto-ssl

Мы реализовали веб-сервис для проверки домена. Что нас интересует, так это влияние на производительность выдачи веб-запроса в методе allow_domain ? Также как часто вызывается этот метод? Вызывается ли он ТОЛЬКО непосредственно перед последовательностью Let's Encrypt?

Казалось бы, если есть сертификат для домена в хранилище, нам не нужно называть его allow_domain .

Возможно, в документации было бы полезно немного больше такого рода объяснений.

Спасибо.

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

Вызывается независимо от того, есть ли у вас сертификат. Лично я проверяю, есть ли у нас уже сертификат, прежде чем спрашивать наш бэкэнд, можно ли сгенерировать новый.

-- first check if we have the certificate already, else check with backend if we allow it 
    local certstorage = auto_ssl:get("storage")

    local fullchain_pem, privkey_pem = certstorage:get_cert(domain)
    if fullchain_pem then
      return true
    else ...

Меня также немного беспокоят накладные расходы / влияние на производительность, но я все еще на стадии планирования и еще не продвинулся так далеко.

@brianlund, спасибо, что поделились. Я реализовал локальный lua_shared_dict для «кеширования» наших результатов из указанной веб-службы.

    auto_ssl:set("allow_domain", function(domain)
      local http = require "resty.http"
      local httpc = http.new()
      local cjson = require "cjson"
      local our_allow_domain_cache = ngx.shared.our_allow_domain_cache

      local found = our_allow_domain_cache:get(domain)

      if found == nil then
        local res, err = httpc:request_uri("[is domain allowed web service]"..domain, {
          method = "GET",
        })

        if not res then
          found = false
        else
          local data = cjson.decode(res.body)
          found = data.found
        end

        -- Cache for 60 seconds, for now...
        our_allow_domain_cache:set(domain, found, 60)
      else
        if found then
          -- Known good domain, keep it in cache for a little longer
          our_allow_domain_cache:set(domain, found, 300)
        end
      end

Мне очень нравится ваша идея проверить сервис auto_ssl:get("storage") . Я мог бы пойти с чем-то похожим. Можно ли предположить, что это происходит при каждом запросе? Или lua_shared_dict auto_ssl используется как слой кеширования для хранения? Похоже, это может быть: https://github.com/GUI/lua-resty-auto-ssl/blob/master/lib/resty/auto-ssl/ssl_certificate.lua#L20

Интересно, не лучше ли в вашем примере проверить:
ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) vs прямой вызов storage .

Я считаю, что ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) проверяет только кеш разделяемой памяти. Я планирую запускать несколько узлов, поэтому мне нужно что-то общее между ними (хранилище Redis). Тем не менее, мне нравится ваше решение для кеширования, оно сэкономит много вызовов службе хранилища, если я увижу какие-либо проблемы с его частым вызовом, я буду иметь это в виду.

Я хотел поблагодарить вас @jasonbouffard за ваш демонстрационный код - это был чрезвычайно полезный строительный блок для меня! Ценить это!

Можно ли предположить, что это происходит при каждом запросе?

Это действительно хороший вопрос.

Я предполагаю, что этот метод вызывается, когда для домена нет сертификата, но я не уверен в этом.
Удалось ли вам это подтвердить

@ Alir3z4

Мне это тоже было любопытно.
Документы об этом не так прозрачны, поэтому мне пришлось проверить исходный код.

Итак, при каждом запросе auto-ssl делает следующее:

  • пытается получить сертификаты из словаря ngx.shared.auto_ssl , которые кешируются на 1 час
  • вызывает определенный пользователем метод allow_domain
  • пытается получить сертификаты из хранилища
  • создает новый сертификат

Было бы идеально объяснить это на README.md.
Спасибо!

Источник:

https://github.com/auto-ssl/lua-resty-auto-ssl/blob/86d3c94807ad1585b464fad2d4defb379f9c152a/lib/resty/auto-ssl/ssl_certificate.lua#L104 -L157

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

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

kshnurov picture kshnurov  ·  3Комментарии

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

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

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

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