414 request uri too large nginx

Ошибка 414 или Error 414 Request URI Too Large — почему она возникает и как ее устранить простому пользователю или владельцу собственного сайта. Начнем с того, что это довольно редкая, не распространенная ошибка. В оригинале ее название — Request URI Too Large.

Почему возникает ошибка 414?

Вы можете столкнуться с ошибкой 414 в случае, когда адрес, который Вами запрашивается, слишком длинный. Серверу не удается его растолковать, в результате чего, на своих экранах вы видите данную ошибку.

Стоит заметить, что любой запрос условно делится на две составляющие:

  • Заголовок;
  • Тело.

В нормальных условиях в заголовке содержится только общая информация. Это значит, что он по своей природе не может быть слишком длинным. Тело же в свою очередь наоборот содержит всю основную часть запроса. Каким бы длинным и ёмким не было тело, сервер воспринимает это за норму и ошибка 414 не должна возникать. Так что в большинстве случаев причиной данной неполадки является именно заголовок и сбои в нем.

Как избавиться от ошибки 414?

Обычному пользователю никак. Если во время сёрфинга в Интернете вы столкнулись с этой нераспространенной проблемой, вы абсолютно бессильны. Нужно просто ждать, пока администраторы злосчастной страницы исправят ситуацию. Единственное, что доступно обычному пользователю – написание запроса в техническую поддержку.

Каковы действия должен совершить владелец сайта для того, чтобы исправить ошибку 414?

  1. Попытаться исключить ошибку непосредственно в коде ресурса.
  2. Сделать больше допустимый размер заголовка. За это отвечает 3 параметра, которые необходимо разместить в http:
  • сlіеnt_bоdу_buffеr_sіzе — отвечает за размер тела;
  • сlіеnt_hеаdеr_buffеr_sіzе — отвечает за обычные заголовки;
  • lаrgе_clіеnt_hеаdеr_buffеrs — отвечает за большие заголовки.

В случае с ошибкой 414 нам необходимо работать с последней строкой. Стандартно размер заголовка = 8kb. Вносим изменения в последнюю строку – дописываем 8 (пробел) 64k. Точно такие же исправления необходимо сделать в каждой строке перед секцией под названием «сервер». Теперь перезагружаем ресурс, ошибка 414 должна уйти. Если нет, то это означает, что вы сделали что-то неправильно.

Напоследок хотелось бы заметить, что если вы совсем не разбираетесь в системе nginx, то не делайте никаких изменений самостоятельно. Так вы не только не решите проблему, но и рискуете встретиться с другими ошибками в дальнейшем. В таком случае лучше обратиться к специалистам, для них справиться с этим не составит особого труда.

Nginx — 414 Request-URI Too Large

означат что размер URL слишком большой и веб-сервер не может его обработать.

Решение — это поднять размер буфера и их количество:

Протокол HTTP не ограничивает длину URI.

Второе решение — это заменить GET на POST запрос.

Ошибка 414 Request URI Too Large возникает в тех случаях, когда веб-сервер не способен обслужить запрос от клиента (т.е. веб-браузера или робота), потому что запрашиваемый URI (Request URI) длиннее, чем сервер может интерпретировать. Говоря простым языком, запрашиваемый веб-адрес слишком длинный, то есть содержит слишком много байтов.

Обычно в настройках веб-сервера заданы довольно широкие лимиты на длину URL-адресов, от 2k и вплоть до 8k символов. В Nginx задается число и размер буферов, а в Apache — размер запроса заголовка.

Так что если адрес верный и не содержит лишнего мусора, то самым простым способом решения проблемы будет реконфигурация веб-сервера. В качестве примера воспользуемся Nginx. Необходимо в файле конфигурации nginx.conf, который обычно расположен в /etc/nginx/nginx.conf добавить или изменить в секции server или http и https строчку:

# изменение количества и размера буферов

Здесь 16k байт и будет желаемым размером URL-адреса, а 4 — количеством желаемых буферов. В данному случае размер буферов более важен, чем их количество, так что в большинстве случаев параметр 4 будет оптимальным.

Для настройки сервера на базе Apache меняем параметр LimitRequestFieldSize в файле конфигурации на желаемое значение (в байтах).

Длина URI не предусмотрена спецификацией

Протокол HTTP не ограничивает длину URI, так что сервер должен иметь возможность обработать любой запрос, даже с использованием метода GET. Но важно учитывать, что ограничение длины накладывают браузеры, под которые и нужно подстраиваться.

Решение проблемы методом POST

Справедливости ради стоит отметить, что метод реконфигурации веб-сервера не является идеальным. В большинстве случаев лучше разделить запрос на части и отправить их с помощью AJAX, к примеру. Но и такой способ может не подойти, если запрос нельзя разбивать или его отправляет библиотека JavaScript от третьей стороны. Повышение лимита длины запроса в настройках веб-сервера будет самым простым, но не единственным методом решения ошибки 414. Руководство по Apache говорит нам, что «в нормальных условиях величина LimitRequestFieldSize не должна изменяться». Так что, вероятнее всего, вы злоупотребляете методом GET, который стоит заменить на POST.

GET против POST

Пара переменной и ее значения в GET передается через URL-запрос:

Тогда как в POST она передается в теле самого заголовка:

Метод POST имеет ряд преимуществ перед GET: он более защищен, ведь большая часть запроса скрыта от пользователя; подходит для операций с большими данными.

Самое главное

Для того, чтобы справиться с ошибкой 414 Request URI Too Large нужно всего-лишь знать азы. Самыми простыми способами ее решением будут реконфигурация веб-сервера или использование метода POST вместо GET.

Причины возникновения ошибки Ошибка 502 bad gateway в Nginx и методы исправления

Причины и методы исправления ошибки Gateway Timeout, Nginx

Как пофиксить ошибку «110: connection timed out» while reading response header from upstream

Как исправить ошибку Primary script unknown в Nginx

Как исправить ошибку 405 Not Allowed в Nginx

Чем вызвана ошибка 500 и как ее исправить в Nginx

Ошибка 400 Bad Request возникает, когда клиент отправляет на Nginx неверный запрос. Это случается когда размер заголовков запроса больше допустимого предела.

Ошибка HTTP 413 (Request Entity Too Large Error) означает, что клиент отправил слишком большой запрос на сервер.

Как решить ошибку upstream sent too big header while reading response header from upstream в Nginx

Чем вызвана ошибка PHP: exec(): Unable to fork и как ее исправить

Обновление до новой версии Mysql

Как исправить ошибку доступа к базе 1045 Access denied for user

Что делать, если во время репликации встречается: Error ‘Duplicate entry ‘115846’ for key ‘PRIMARY» on query. Default database: ‘db’. Query: ‘INSERT INTO some_table .

И как правильно работать с длительными соединениями в MySQL

Причины и методы избавления от этой ошибки

Что значит и как это починить

Как изменить размер бинлогов в Mysql и правильно перезапустить сервер.

Включение и использование log-файлов для проверки работы Nginx

Создание индексов на рабочих MySQL таблицах без головной боли

K-safety как подход обеспечения доступности

Примеры ad-hoc запросов и технологии для их исполнения

Как эффективно использовать цикл foreach в PHP

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