Насколько я понимаю, AWS Application Load Balancer является балансировщиком нагрузки уровня 7 (HTTP) и поддерживает только HTTP / 2 на внешнем интерфейсе, а не на вашем Nginx.
Вы можете проверить это, добавив$server_protocol
к вашему Nginx log_format
:
log_format my_log_format '$remote_addr - $remote_user [$time_local] $server_protocol "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /usr/local/nginx/nginx-access.log my_log_format;
Я предполагаю, что трафик поступает как HTTP / 1.1.
Даже если AWS ALB поддерживает HTTP / 2 длябэкэнд сейчас, это не значит, что он будет поддерживать HTTP / 2 Push.Это усложняется, когда задействовано несколько частей инфраструктуры, как это (что если ALB и Nginx оба поддерживают push, а клиент - нет), и лучший совет - это push из пограничного узла, особенно если он поддерживает это с помощью инструкций заголовка предварительной загрузки HTTP.
Возможно, вам лучше использовать балансировщик нагрузки уровня 4 (TCP), чтобы заставить его работать.