Использование actix-web с поддержкой HTTP2 в Heroku

Я пытаюсь развернуть один из примеров actix-web, который предлагает поддержку HTTP/2 в Heroku, после небольшого изменения его для прослушивания по предоставленной $PORT число, а также способ загрузки сертификатов - вместо чтения из файла он получает открытый и закрытый ключи из среды.

Проблема в том, что при каждом запросе маршрутизатор Heroku регистрирует, что соединение закрыто без ответа.

heroku[router]: 
at=error
code=H13
desc="Connection closed without response"
method=GET
status=503
bytes=0
protocol=https

Поскольку это работало локально, я подозреваю, что проблема в конфигурации моего динамометра, которая является Хобби (7 $ / мес), особенно в разделе сертификатов. Поскольку приложение ожидает получить информацию о сертификате от переменных среды, и поскольку Heroku не предоставляет вам доступ к их сертификатам (например, cert для xxxxx.herokuapp.com), я купил доменное имя в надежде создать собственное. Я сделал, используя следующую страницу.

С самогенерируемым сертификатом я пробовал до сих пор следующее, что приводило к любому из следующих случаев:

  1. Чтобы предоставить ту же пару ключей для dyno и приложения. Журналы дают ошибку, упомянутую выше.
  2. Не для обеспечения конфигурации SSL для dyno, а для приложения. Следовательно, https доступ отключен, и динамо даже не попало.
  3. Не для предоставления сертификатов конфигурации для приложения, но для Dyno. Приложение вылетает во время загрузки.

Тем не менее, если я удаляю связанные rustls линии, все работает гладко, но используемый протокол HTTP/1.1,

Поэтому я хотел бы спросить вас:

  • Есть ли что-то принципиально плохое в том, что приложение ожидает загрузки сертификатов?
  • Стоит ли попробовать других провайдеров? (например, DigitalOcean, AWS, Google Cloud)
  • Ты хоть представляешь, что может заставить его работать в Heroku?

1 ответ

Решение

Я только что обнаружил, что Heroku не поддерживает HTTP/2 в то время ( источник):

HTTP/2 в настоящее время не поддерживается в Heroku, хотя это может измениться в будущем. Вы можете узнать о наших поддерживаемых протоколах HTTP здесь: https://devcenter.heroku.com/articles/http-routing

Для любых будущих разработок мы рекомендуем подписаться на список изменений Heroku. Это позволит вам заранее узнать об обновлениях, улучшениях и устареваниях, чтобы вы могли внести любые необходимые изменения.

Другие вопросы по тегам