• Быстрый переход
  • Рубрики
  • Свежие записи
  • Метки
  • Архивы
  • Реклама 1
  • Реклама 2
  • Рейтинг@Mail.ru

    Добро пожаловать! Ваш IP-адрес: ec2-54-145-117-60.compute-1.amazonaws.com

    веб-сервер

    Nginx большие cookies и ошибка сервера 400 Bad Request

    Не давно наткнулся на такую проблему. Нужно было просмотреть превью (Preview), на вордпрессе, в котором был относительно большой объем информации, который необходимо хранить в куках. После чего я получаю ошибка сервера 400 Bad Request
    Как оказывается, при увеличении размеров cookie, заголовок запроса клиента не уместился в буфер для чтения, размер которого у nginx’а по умолчанию составляет 1K.

    Директива: client_header_buffer_size
    синтаксис: client_header_buffer_size размер;
    умолчание: client_header_buffer_size 1k;
    контекст: http, server

    Задаёт размер буфера для чтения заголовка запроса клиента. Для большинства запросов достаточно буфера размером в 1K байт. Однако если в запросе есть длинные cookies, или же запрос пришёл от WAP-клиента, то он может не поместиться в 1K. Поэтому, если строка запроса или поле заголовка запроса не помещаются полностью в этот буфер, то выделяются буферы большего размера, задаваемые директивой large_client_header_buffers.

    Директива: large_client_header_buffers
    синтаксис: large_client_header_buffers число размер;
    умолчание: large_client_header_buffer 4 8k;
    контекст: http, server

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

    server {
    ...
    client_header_buffer_size 4k;
    large_client_header_buffers 8 16k;
    ...
    }

    Также возможно понадобится отредактировать директивы proxy_buffers и proxy_buffer_size

    Установка Nginx в FreeBSD 8.1

    Apache является самым популярным веб-сервером и одним из самых успешных проектов с открытым исходным кодом. Начиная с апреля 1996-го Apache обслуживает больше веб-сайтов, чем какой-либо другой веб-сервер. Самые большие в мире веб-сайты, включая YouTube, Facebook, Wikipedia и Craigslist обслуживаются Apache, обрабатывающим миллиарды запросов в месяц. За прошедшие много лет использования Apache он показал себя как очень надёжный, безопасный и гибкий веб-сервер. Глядя на мощь и прелесть Apache сам собой напрашивается вопрос: а есть ли в природе что-то с подобной функциональностью, но с лучшей производительностью и более простое в настройке. Это «что-то» существует и называется Nginx.

    Nginx (произносится как «Engine X») — это высокопроизводительный веб-сервер и reverse-прокси, созданный Игорем Сысоевым для Rambler.Ru. Начиная с лета 2004-го Rambler.Ru использует Nginx на своих серверах, обслуживающих порядка миллиарда запросов в сутки. Так же, как и Apache, Nginx используется на многих крупных веб-ресурсах, таких как WordPress, Hulu и MuchiMedia. На март 2011 Nginx занимает 4 место по рейтингу Netcraft, пропустив вперёд Apache, IIS и GFE.

    Подобно Apache, Nginx предлагает набор возможностей, соответствующий требованиям к современному веб-серверу:

    Подробнее...