Проблема Nginx HTTP 1.2

Вопрос или проблема

Я пытаюсь выяснить, что, хотя nginx настроен на прослушивание HTTP1.2, все запросы в логах – это HTTP1.1

[11/Oct/2024:11:53:41 +0300] "GET /el_gr/tapetsaries-toixou/fototapetsaries-toixou/zoa/filtra/xromatikes_omades-psychra-kitrina-xroma-oxia_fusiko-gkri_mpez-leuko-anoichto_mob-mob-somon-anoichto_gkri-anthraki-gkri-thema_fototapetsarias-artistic-apoxrosi_fototapetsarias-egchromo?price=amshopby_slider_from-amshopby_slider_to HTTP/1.1" 200 50347 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.89 Mobile Safari/537.36 (compatible; GoogleOther)" 
     [11/Oct/2024:11:53:41 +0300] "GET /el_gr/catalog/product/view/id/144583/s/144583-fototsapetsaries-diafora-sxedia-megethi-100-159102/ HTTP/1.1" 200 55818 "-" "Mozilla/5.0 (compatible; Pinterestbot/1.0; +http://www.pinterest.com/bot.html)" 
     [11/Oct/2024:11:53:43 +0300] "GET /el_gr/catalog/product/view/id/134022/s/134022-fototsapetsaries-diafora-sxedia-megethi-100-148541/ HTTP/1.1" 200 56234 "-" "Mozilla/5.0 (compatible; Pinterestbot/1.0; +http://www.pinterest.com/bot.html)" 
     [11/Oct/2024:11:53:43 +0300] "GET /el_gr/catalog/product/view/id/153049/s/153049-fototsapetsaries-diafora-sxedia-megethi-100-167568/ HTTP/1.1" 200 55991 "-" "Mozilla/5.0 (compatible; Pinterestbot/1.0; +http://www.pinterest.com/bot.html)" 
    54.236.1.13 [ 54.236.1.13, 54.236.1.13, 127.0.0.1] [11/Oct/2024:11:53:46 +0300] "GET /el_gr/catalog/product/view/id/151013/s/151013-fototsapetsaries-diafora-sxedia-megethi-100-165532/ HTTP/1.1" 200 56020 "-" "Mozilla/5.0 (compatible; Pinterestbot/1.0; +http://www.pinterest.com/bot.html)" 
     [11/Oct/2024:11:53:47 +0300] "GET /el_gr/tapetsaries-toixou/fototapetsaries-toixou/zoa/filtra/xromatikes_omades-psychra-pastel-mov-therma-xroma-oxia_fusiko-gkri_mpez-leuko-anoichto_mob-mob-somon-kokkino-anoichto_gkri-kafe-thema_fototapetsarias-artistic-louloudia-vintage-apoxrosi_fototapetsarias-egchromo?price=amshopby_slider_from-amshopby_slider_to HTTP/1.1" 200 56578 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.89 Mobile Safari/537.36 (compatible; GoogleOther)" 
     [11/Oct/2024:11:53:48 +0300] "GET /el_gr/50369-tapetsaria-arts-crafts-prasino-no-36159-by-casadeco HTTP/1.1" 200 63129 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.89 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 
     [11/Oct/2024:11:53:48 +0300] "GET /el_gr/catalog/product/view/id/142099/s/142099-fototsapetsaries-diafora-sxedia-megethi-100-156618/ HTTP/1.1" 200 55810 "-" "Mozilla/5.0 (compatible; Pinterestbot/1.0; +http://www.pinterest.com/bot.html)" 
     [11/Oct/2024:11:53:49 +0300] "GET /el_gr/49391-wing-kremasto-ntoulapi-oikologiko-tzaki-no-14297-by-abb?swatch_colour_att=11095 HTTP/1.1" 200 69558 "-" "Mozilla/5.0 (compatible; Pinterestbot/1.0; +http://www.pinterest.com/bot.html)"
     [11/Oct/2024:11:53:49 +0300] "GET /el_gr/catalog/product/view/id/90457/s/58177-diaxoristika-domatiou-diafora-sxedia-102723/ HTTP/1.1" 200 68402 "-" "Mozilla/5.0 (compatible; Pinterestbot/1.0; +http://www.pinterest.com/bot.html)" 

Это мой vhost:

server {
    listen 443 ssl;
    http2 on;
    server_name www.example.com;
    ssl_certificate /etc/nginx/ssl/2023/ssl_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/2023/example.key;
    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers               'AES128+EECDH:AES128+EDH:!aNULL';

    return 301 https://example.com$request_uri;
# Nginx Bad Bot Blocker Includes
# REPO: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker
##
     include /etc/nginx/bots.d/ddos.conf;
     include /etc/nginx/bots.d/blockbots.conf;

# применить правила для ratebot
    limit_req zone=ratebot_soft nodelay;
    limit_req zone=ratebot_medium nodelay;
    limit_req zone=ratebot_hard nodelay;
}




server {
    listen 443 ssl;
    http2 on;
    server_name example.com;
    proxy_headers_hash_bucket_size 128;
    proxy_headers_hash_max_size 1024;
    ssl_certificate /etc/nginx/ssl/2023/ssl_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/2023/example.key;
    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers               'AES128+EECDH:AES128+EDH:!aNULL';


     include /etc/nginx/bots.d/ddos.conf;
     include /etc/nginx/bots.d/blockbots.conf;

# применить правила для ratebot
    limit_req zone=ratebot_soft nodelay;
    limit_req zone=ratebot_medium nodelay;
    limit_req zone=ratebot_hard nodelay;

    location / {
        proxy_pass http://127.0.0.1:6081;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Server $http_host;
        proxy_set_header Host $http_host;

        proxy_buffering off;
        proxy_buffer_size          16k;
        proxy_buffers              64 4k;
        proxy_busy_buffers_size    24k;
        fastcgi_buffer_size        32k;
        fastcgi_buffers            16 32k;

        if ($cors_origin) {
    add_header 'Access-Control-Allow-Origin' '$cors_origin' всегда;
    add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE,HEAD,PATCH' всегда;
    add_header 'Access-Control-Allow-Headers' '*' всегда;
    add_header 'Access-Control-Allow-Credentials' 'true' всегда;
    }

    }
}

Это выделенный сервер в Hetzner. Он находится за файрволом, который отключен. Также мы не используем панели управления, только ОС Ubuntu 22. Файрвол CSF включен

Nginx работает как прокси для varnish с завершением SSL. Таким образом, Varnish обрабатывает первые запросы

Перед этим сервером также включен Cloudflare с поддержкой http1.2

Что я здесь упускаю, ребята?

Ответ или решение

Проблема с HTTP/1.2 в Nginx: подходим к решению

Введение

Вы описали ситуацию, когда Nginx настроен на поддержку HTTP/1.2, однако все запросы в журнале фиксируются как HTTP/1.1. В данной статье мы рассмотрим возможные причины проблемы и предложим пути ее решения.

Причины проблемы

  1. Настройки Nginx: Прежде всего, стоит убедиться, что ваша конфигурация действительно поддерживает HTTP/1.2. В вашем конфиге установлено http2 on;, что относится к версии HTTP/2, и это может вызывать путаницу.

  2. Версия протокола: Обратите внимание, что HTTP/1.2 фактически не был стандартизован. Протоколы, с которыми вы можете работать, это HTTP/1.0, HTTP/1.1 и HTTP/2. Несмотря на это, многие пользователи иногда подразумевают под HTTP/1.2 улучшения, которые фактически уже реализованы в HTTP/1.1.

  3. Промежуточные прокси и кэширование: Ваш сервер находится за Cloudflare, который также может влиять на заголовки и протоколы. Cloudflare поддерживает HTTP/2, но если его клиенты подключаются по HTTP/1.1, они могут генерировать запросы, фиксируемые вашим сервером как HTTP/1.1. Если запросы приходят через Varnish, также следует проверить, какой протокол используется между Cloudflare и вашим Varnish сервером.

  4. Настройки SSL: Протоколы SSL (TLSv1, TLSv1.1, TLSv1.2) не влияют на версию HTTP, однако могут быть связующими факторами для связи между клиентами и вашим серверами.

Рекомендации по решению

  1. Перепроверьте конфигурацию Nginx:

    • Убедитесь, что конфигурация действительно допускает использование HTTP/2. Если это так, следует проверить соответствующие заголовки и параметры.
    server {
       listen 443 ssl http2;  # Здесь правильно указано http2
       ...
    }
  2. Проверка Varnish: Убедитесь, что настройки Varnish поддерживают необходимые протоколы. Varnish может работать с HTTP/1.1 или HTTP/2 в зависимости от конфигурации.

  3. Мониторинг запросов через Cloudflare:

    • Проверьте панель управления Cloudflare, чтобы убедиться, что запросы исходят с поддержкой нужных версиях HTTP. Можете воспользоваться инструментами мониторинга запросов с Cloudflare.
  4. Тестирование локально: Для тестирования запроса в локальной сети можно использовать инструменты, такие как curl, с указанием необходимых параметров:

    curl -I -http2 https://example.com
  5. Логи и диагностика: Следите за логами Nginx для понимания, как обработчики запросов обрабатывают протоколы. Включение дополнительного уровня логирования может помочь выявить, какие запросы могут приходить в обернутом или некорректном виде.

Заключение

Ваша проблема заключается не в том, что Nginx не поддерживает HTTP/1.2, а, скорее, в том, что этот протокол не стандартизирован как полноценный. Проверьте конфигурацию Cloudflare и Varnish, и убедитесь, что они согласованы с требованиями вашего сайта.

Надеюсь, эти рекомендации помогут вам диагностировать и решить проблему. Если вопрос сохраняется, возможно, стоит обратиться за дополнительной помощью в сообщество Nginx или к вашему хостинг-провайдеру.

Оцените материал
Добавить комментарий

Капча загружается...