Использование 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), я купил доменное имя в надежде создать собственное. Я сделал, используя следующую страницу.
С самогенерируемым сертификатом я пробовал до сих пор следующее, что приводило к любому из следующих случаев:
- Чтобы предоставить ту же пару ключей для dyno и приложения. Журналы дают ошибку, упомянутую выше.
- Не для обеспечения конфигурации SSL для dyno, а для приложения. Следовательно,
https
доступ отключен, и динамо даже не попало. - Не для предоставления сертификатов конфигурации для приложения, но для 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. Это позволит вам заранее узнать об обновлениях, улучшениях и устареваниях, чтобы вы могли внести любые необходимые изменения.