Re: Не отдается картинка - client sent too long header line

Sergey Kobzar sergey.kobzar at itcraft.org
Wed Aug 8 15:11:24 UTC 2012


Максим

Спасибо. См. ниже.

On 08/08/12 17:51, Maxim Dounin wrote:

> On Wed, Aug 08, 2012 at 04:41:20PM +0300, Sergey Kobzar wrote:
>
>> On 08/08/12 16:39, Sergey Kobzar wrote:
>>> On 08/08/12 14:34, Sergey Kobzar wrote:
>>>> Есть кастомная страница для 414 ошибки:
>>>>
>>>> error_page 414 /errors/414.html;
>>>>
>>>> Если запрашиваю страницу напрямую http://test.biz/errors/414.html, все
>>>> ОК.
>>>>
>>>> Если вызываю 414 ошибку (Request-URI Too Large), то на некоторых доменах
>>>> все ОК, а на некоторых html отображается нормально, но картинки нет
>>>> видно. При этом логе:
>>>>
>>>> 2012/08/08 12:21:11 [info] 16055#0: *14212044 client sent too long
>>>> header line: "Referer: http://tst.biz/
>>>> ...
>>>> " while reading client request headers, client: 1.1.1.1, server:
>>>> localhost, request: "GET /errors/images/logo.png HTTP/1.1", host:
>>>> "tst.biz"
>
> Это сообщение из error log'а в его исходном виде?  Читай:
> заголовок Referer длинный, или на самом деле короткий, и nginx
> возводит напраслину?

Я вырезал Referer чтобы не писать сюда километровую строку запроса. 
Исходная задача - вывести кастомную страницу ошибки на 414. Я специально 
задал строку запроса такой длины.


>>>> На других доменах, с тразницей в одну букву все ОК. И как выяснилось
>>>> проблема не перманентна.
>>>>
>>>> Что это может быть?
>>>
>>> В документации нашел
>>> http://nginx.org/ru/docs/http/ngx_http_core_module.html#large_client_header_buffers
>>>
>>>
>>> "Поле заголовка запроса также не должно превышать размера одного буфера,
>>> иначе клиенту возвращается ошибка 400 (Bad Request)."
>>>
>>> - я как раз 400 ошибку и получаю.
>>>
>>> выставил
>>>
>>> large_client_header_buffers 4 32k;
>>>
>>> не помогло.
>
> Поскольку large_client_header_buffers ограничивают и размер
> request line, и размер строки заголовка - его изменение ни на
> что не влияет.  Если не влезла строка запроса - то и заголовок
> Referer, содержащий тот же самый uri, не влезет.
>
> Compare:
>
> GET / HTTP/1.1
> Referer: http://example.org/

Понял.


>>> Почему имидж не отдается?
>>>
>>> Спасибо.
>>
>> Из access.log:
>> 178.151.129.74 - - [08/Aug/2012:14:39:59 +0100] "GET
>> /errors/images/logo.png HTTP/1.1" 400 372 "-" "Mozilla/5.0 (X11;
>> Linux i686; rv:10.0.6) Gecko/20100101 Firefox/10.0.6" "-" - -
>
> Это, на самом деле, не интересно.  Интересно - когда "всё
> нормально".  Не должно бы.  Хотя, конечно, браузеры могут
> проявлять интеллект, но я в этом сомневаюсь.  Скорее уж "просто
> было в кеше".

Да - застряло в кэше.


Но вопрос остается, возможно ли в custom error page на 414 ошибку 
вывести картинку?


>
> Maxim Dounin
>



Подробная информация о списке рассылки nginx-ru