Клиент - Nginx HTTP2 - Apache HTTP1.1, кажется, нарушает RFC
Привет, я Муно. Каким-то образом я заметил, что мой pull-запрос в Deno был объединен. Ура!
Проблема
Как сказано в заголовке, если это нарушение RFC, то происходит следующее:
невозможно использовать curl
curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
Похоже, это происходит, когда HTTP/2 всегда требует HTTPS-связи, но Nginx обратный проксирует к бэкэнд-серверу Apache, используя HTTP-связь.
Обходной путь: отключить HTTP/2
Подобные глупые... обсуждения этой проблемы, кажется, возникают в разных местах на Github.
Пока что я отключил только HTTP/2.
Кроме того, в этом состоянии иногда невозможно просмотреть с браузеров MacOS/IOS, иногда возможно, и информации о решении очень мало. Если указать --http1.1 в опциях curl, то пока что это работает, но...
Спецификация HTTP2
Согласно спецификации HTTP2, его можно использовать как с HTTP, так и с HTTPS, но браузеры, похоже, разрешают только HTTPS-связь. Что это такое...
Неэффективный самоподписанный сертификат
Я настроил временную HTTPS-связь с самоподписанным сертификатом на бэкэнд-сервере Apache, а также на бэкэнде прописалProtocols h2 http/1.1
и активировал модуль с помощью a2enmod, но, похоже, это все равно не работает.
Необходимость HTTP/2
Сравнение скорости загрузки нескольких изображений с HTTP/1.1 и HTTP/2
На самом деле, я очень хочу правильно поддерживать HTTP/2, но, возможно, это будет только по мере необходимости.
Поскольку это произошло только вчера, мне, вероятно, нужно будет провести расследование немного медленнее 👀