Что вызывает ошибку 413 от Apache (без modsecurity)? - PullRequest
0 голосов
/ 19 октября 2018

Один из моих клиентов сообщил об ошибке HTTP 413 при использовании нашего приложения.

Я понимаю, что это ошибка, говорящая о слишком большом размере:

413 Слишком большая полезная нагрузка

Однако клиент пытался отправить очень маленький файл (менее 12 КБ).Мало того, что, пытаясь снова и снова, мы не получаем эту ошибку 413.Мы не можем повторить ошибку.

У меня не установлен modsecurity.Я не использую PHP (мой код на C ++).

Мой CGI фактически сказал мне, что соединение между Apache и им было разорвано в середине потока, поэтому я могу отмахнуться от того, что ошибка генерируется моим кодом.Это должно быть на стороне Apache2.

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

  • URL-адрес слишком длинный
  • Используется GET вместо POST
  • Устанавливается modsecurity, и один из загружаемых файлов слишком велик
  • Используется PHP, и его размер больше, чем разрешено по php.ini

Я уверен, что у меня нет modsecurity или PHP на этом компьютере.

URL-адрес очень короткий (63 символа в оригинале), и журнал ясно показывает, что POSTиспользовался.Здесь у меня есть журнал Apache2:

finball.m2osw.com: 443 50.255.47.1 - - [03 / Oct / 2018: 22: 10: 59 +0000] "POST / finball / invoice /finball1-56149 HTTP / 1.1 "413 345" www.example.com "" https://www.example.com/finball/invoice/finball1-56149?a=edit" "Mozilla / 5.0 (Windows NT 6.1; rv: 62.0) Gecko / 20100101 Firefox / 62.0" TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384

И в моем журнале из моего приложения четко сказано, что сокет закрывается (в данном случае сокет - это stdin, канал между Apache2 и CGI):

2018/10/03 22:10:59 finball1 Snap [22975]: фатальная ошибка: моментальный дочерний процесс: произошла ошибка при чтении среды из сокета в дочернем процессе сервера (отсутствует первая граница POST.). (503 Сервис недоступен: нестабильное сетевое соединение) (в функции "die ()") (snap_child.cpp: 6845)

Мы ожидаем данные POST, и они никогда не поступали.Затем мое приложение возвращает ошибку 503. Однако, как мы видим из журналов Apache, клиент получил вместо него 413.

Whиначе может заставить Apache2 вернуть код ошибки 413 HTTP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...