Использование actix-web с поддержкой HTTP2 в Heroku - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь развернуть один из примеров 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 отключен, и dyno даже не ударил.
  3. Не для обеспечения конфигурации сертификатов для приложения, но для dyno.Приложение вылетает во время загрузки.

Однако, если я удаляю соответствующие строки rustls, все работает гладко, но используется протокол HTTP/1.1.

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

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

1 Ответ

0 голосов
/ 10 февраля 2019

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

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

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

...