Как установить позволенную длину URL для запроса nginx (код ошибки: 414, слишком большой uri)

В общем, в C / C ++ нет стандартной функции signum, и отсутствие такой фундаментальной функции многое говорит вам об этих языках.

Кроме того, я полагаю, что обе точки зрения большинства о правильном подходе к определению такой функции в некотором смысле верны, и «спор» об этом фактически не является аргументом, если принять во внимание два важных предостережения:

  • Функция signum всегда должна возвращать тип своего операнда, аналогично функции abs(), потому что signum обычно используется для умножения с абсолютным значением после того, как последний был как-то обработан. Поэтому основной вариант использования signum - это не сравнения, а арифметика, и последний не должен включать дорогостоящие преобразования целых чисел в / из плавающей запятой.

  • Типы с плавающей запятой не имеют единого точного нулевого значения: +0.0 можно интерпретировать как «бесконечно меньше нуля», а -0.0 - «бесконечно меньше нуля». По этой причине сравнения, включающие ноль, должны внутренне сверяться с обоими значениями, а выражение типа x == 0.0 может быть опасным.

Что касается C, я думаю, что лучший способ продвижения вперед с целочисленными типами - это действительно использовать выражение (x > 0) - (x < 0), так как оно должно переводиться без ветвления и требует только трех основных операций. Лучше всего определить встроенные функции, которые обеспечивают возвращаемый тип, соответствующий типу аргумента, и добавить C11 define _Generic для сопоставления этих функций общему имени.

С значениями с плавающей запятой, я думаю, что встроенные функции, основанные на C11 copysignf(1.0f, x), copysign(1.0, x) и copysignl(1.0l, x), - это путь, просто потому, что они также с большой вероятностью свободны от ветвей и дополнительно делают не требует приведения результата из целого числа обратно в значение с плавающей запятой. Вы, вероятно, должны заметить, что ваши реализации с плавающей запятой signum не будут возвращать ноль из-за особенностей значений с плавающей запятой, соображений времени обработки, а также потому, что это часто очень полезно в арифметике с плавающей запятой для получения правильный знак -1 / + 1, даже для нулевых значений.

51
задан Roald Nefs 15 February 2017 в 03:53
поделиться

1 ответ

От: http : // nginx. org / r / large_client_header_buffers

Синтаксис: large_client_header_buffers число размер ;
По умолчанию: large_client_header_buffers 4 8k;
Контекст: http, сервер

Устанавливает максимальное число и размер буферов, используемых для чтения большого заголовка запроса клиента. Строка запроса не может превышать размер одного буфера, или клиенту возвращается ошибка 414 (Request-URI Too Large). Поле заголовка запроса также не может превышать размер одного буфера, в противном случае клиенту будет возвращена ошибка 400 (неверный запрос). Буферы выделяются только по запросу. По умолчанию размер буфера равен 8 Кбайт. Если после завершения обработки запроса соединение переходит в состояние поддержания активности, эти буферы освобождаются.

89
ответ дан 7 November 2019 в 10:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: