Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Nginx Error 400: Bad Request (client sent invalid method) Linux / DevOps

Nginx 400: client sent invalid method — Анализ причин и фикс

Обновлено: 18.08.2026  ·  Официальная база знаний

В журнале error.log Nginx регулярно появляются предупреждения: client sent invalid method while reading client request line, client: 198.51.100.77, server: example.com, request: "\x16\x03\x01\x02\x00\x01...". Клиент получает отказ с кодом 400 Bad Request.

Сигнатура запроса в логеЧто на самом деле отправляет клиентПричина ошибки
\x16\x03\x01...TLS Client Hello (Бинарный пакет SSL)Попытка установить HTTPS-соединение на чистый HTTP-порт (80)
PRI * HTTP/2.0HTTP/2 Connection PrefaceПопытка соединения по h2c на порт без поддержки HTTP/2
Мусорные байты / эксплойтыСетевой сканнер (ZGrab, Shodan)Фаззинг портов и сканирование уязвимостей
  • Большинство таких записей генерируется автоматизированными сканерами уязвимостей или ботами.
  • Ошибка может возникать у реальных пользователей, если в ссылке на сайте ошибочно указан протокол https://example.com:80/.
  1. Проверьте, какой трафик вызывает ошибку в журнале Nginx:
    sudo tail -n 30 /var/log/nginx/error.log | grep "invalid method"
  2. Если строка начинается с шестнадцатеричных символов \x16\x03..., это означает, что клиенты пытаются открыть TLS-сессию на обычном незашифрованном 80 порту.
  3. Проверьте внешние DNS-записи и конфигурацию балансировщиков нагрузки (AWS ALB, Cloudflare): порт 80 должен принимать только чистый HTTP с последующим 301-редиректом на 443 порт.
  4. Если вы настраиваете поддержку протокола HTTP/2 (h2c) без шифрования на внутреннем порту, явно включите его в директиве listen:
    # Для Nginx 1.25.1+:
    listen 8080;
    http2 on;
    
    # Для старых версий:
    listen 8080 http2;
  5. Для снижения шума в логах от сетевых сканеров понизьте уровень логирования подобных аномалий в nginx.conf:
    error_log /var/log/nginx/error.log error;
SOC / SIEM Инсайт: Массовое появление записей client sent invalid method с одного IP-адреса с различными бинарными последовательностями свидетельствует об активном сканировании портов утилитами вроде Nmap или попытках эксплуатации уязвимостей переполнения буфера.
Практический опыт инженера: Если эта ошибка сыплется в Kubernetes-кластере от Ingress-контроллера, проверьте liveness/readiness пробы: возможно, kubelet шлет TCP/HTTPS health-check на HTTP-порт пода.

Частые вопросы (FAQ)

Опасна ли ошибка client sent invalid method для сервера?

Нет, для сервера она безопасна. Nginx парсит первую строку запроса на уровне конечного автомата, моментально отбрасывает невалидный метод и закрывает соединение, не передавая данные в бэкенд.

Почему в логе отображаются байты \x16\x03\x01?

Байт \x16 означает тип TLS Handshake Record, а \x03\x01 соответствует версии протокола TLS 1.0/SSL 3.0. Клиент пытался начать защищенную сессию на незащищенном сокете.

Можно ли полностью заблокировать IP-адреса, спамящие такими запросами?

Да, с помощью утилиты fail2ban, настроив фильтр по регулярному выражению 'client sent invalid method' в логах Nginx.

Поддерживает ли Nginx кастомные HTTP-методы (например, PROPFIND для WebDAV)?

Да, для этого необходимо собрать Nginx с модулем ngx_http_dav_module или использовать сторонние WebDAV модули.