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

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

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Nginx Error 414: Request-URI Too Large (large_client_header_buffers exceeded) Linux / DevOps

Nginx Error 414: Request-URI Too Large — Настройка буферов URL

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

При отправке запроса с длинной строкой параметров (GET query parameters, сложные аналитические фильтры, длинные OpenID/OAuth токены в URL) сервер возвращает 414 Request-URI Too Large. В /var/log/nginx/error.log фиксируется: client sent too long URI in request line.

Буфер NginxРазмер по умолчаниюНазначение
client_header_buffer_size1kБазовый буфер для чтения строки запроса и стандартных заголовков
large_client_header_buffers4 8k (4 буфера по 8 КБ)Пул буферов для чтения сверхдлинных URI и объемных Cookie
Максимальная длина URI8 КБ (размер 1 буфера)Превышение вызывает моментальный возврат статуса 414
  • Ошибка возникает при интеграции с системами авторизации (SAML/OAuth/SSO) или при экспорте сложных фильтров поисковых систем.
  • Обычные короткие запросы обрабатываются сервером без сбоев.
  1. Откройте конфигурационный файл /etc/nginx/nginx.conf.
  2. В блоке http или конкретном блоке server увеличьте размер буферов для обработки больших заголовков и длинных URI:
    # Увеличиваем размер одного буфера до 16k или 32k:
    client_header_buffer_size 4k;
    large_client_header_buffers 4 32k;
  3. Убедитесь, что суммарный размер одного буфера из large_client_header_buffers превышает максимальную предполагаемую длину вашего URL со всеми параметрами.
  4. Проверьте валидность файла конфигурации:
    sudo nginx -t
  5. Перезагрузите веб-сервер для применения изменений: sudo systemctl reload nginx.
Архитектурный стандарт (REST API): Передача огромных массивов данных (списки ID, сырой бинарный код, структуры фильтрации) через параметры строки запроса в методе GET является антипаттерном. Перепроектируйте API на использование метода POST с передачей параметров в теле запроса (JSON body).
Практический опыт инженера: Если Nginx стоит за CDN (Akamai, Cloudflare, Fastly), помните, что у CDN есть свои жесткие ограничения длины URI (обычно от 8k до 16k), которые нельзя обойти настройками Nginx.

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

Почему нельзя сделать large_client_header_buffers бесконечно большим?

Выделение гигантских буферов на каждое соединение делает сервер уязвимым к DoS-атакам по исчерпанию оперативной памяти при массовом открытии сокетов злоумышленниками.

Может ли длина URI превышать размер одного буфера из large_client_header_buffers?

Нет. Строка URI обязана целиком помещаться в один буфер. Если длина URL больше размера одного буфера (например, 32k), Nginx вернет 414 даже при наличии 4 таких буферов.

В чем разница между 414 Request-URI Too Large и 400 Bad Request при переполнении заголовков?

Если переполняется строка самого URL запроса (Request-Line), отдается код 414. Если переполняются последующие HTTP-заголовки (например, огромные Cookie), Nginx отдает код 400.

Как проверить размер отправляемого URL в консоли?

Используйте команду: echo -n 'https://example.com/api?params...' | wc -c.