РЕДАКТИРОВАТЬ: я понял проблему
У меня не был включен модуль http2, поэтому включение http2 на краю не работало. Мне не нужна связь http2 между apache и моими серверами узлов, так как между серверами нет ограничения HTTP-соединения.
В этом руководстве есть все подробности:
https://docs.bitnami.com/aws/apps/trac/administration/enable-http2-apache/
ОРИГИНАЛЬНЫЙ ВОПРОС:
Я использую apache на aws bitnami в качестве обратного прокси для набора узловых серверов. Конфигурация vhost следующая:
<VirtualHost *:443>
SSLProxyEngine on
ServerName staging.website.com
ProxyRequests off
Protocols h2 h2c http/1.1
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://httpBalancer>
BalancerMember http://127.0.0.1:2001 route=1
BalancerMember http://127.0.0.1:2002 route=2
Order Deny,Allow
Deny from none
Allow from all
ProxySet lbmethod=bybusyness
ProxySet stickysession=ROUTEID
</Proxy>
<Proxy balancer://wsBalancer>
BalancerMember ws://127.0.0.1:2001 route=1
BalancerMember ws://127.0.0.1:2002 route=2
Order Deny,Allow
Deny from none
Allow from all
ProxySet lbmethod=bybusyness
ProxySet stickysession=ROUTEID
</Proxy>
#RewriteEngine On
#RewriteCond %{HTTP:Upgrade} =websocket [NC]
#RewriteRule /updates balancer://wsBalancer/updates [P,L]
ProxyPass /updates balancer://wsBalancer/updates
ProxyPass / balancer://httpBalancer/
ProxyPassReverse / balancer://httpBalancer
ProxyPassReverse /updates balancer://wsBalancer/updates
ProxyPreserveHost On
SSLEngine on
SSLCertificateFile "/opt/bitnami/apache2/conf/server.crt"
SSLCertificateKeyFile "/opt/bitnami/apache2/conf/server.key"
SetEnvIfNoCase Origin "https?://(www\.)?(stripe\.com|js\.stripe\.com)(:\d+)?$" ACAO=$0
Header set Access-Control-Allow-Origin %{ACAO}e env=ACAO
Header set Access-Control-Allow-Credentials "true" env=ORIGIN
Header set Content-Security-Policy "frame-ancestors *.quikstrike.net;"
# Always set Vary: Origin when it's possible you may send CORS headers
Header merge Vary Origin
</VirtualHost>
Я хотел бы, чтобы сервер apache мог принимать соединения http2 от клиентов веб-браузера, чтобы воспользоваться его полным мультиплексированием. Для меня не имеет значения, являются ли запросы к серверам узлов https, http или http2. Это возможно? Я открыт для решений, которые включают переход на nginx или использование балансировщика нагрузки AWS, если это единственный вариант, но мне действительно нужно полное мультиплексирование http2.
(Этот ответ также находится в редакции исходного вопроса)
У меня не был включен модуль http2, поэтому включение http2 на краю не работало. Мне не нужна связь http2 между apache и моими серверами узлов, так как между серверами нет ограничения HTTP-соединения.
В этом руководстве есть все подробности:
https://docs.bitnami.com/aws/apps/trac/administration/enable-http2-apache/