Upstream слишком большой - nginx + codeigniter
Я получаю эту ошибку от Nginx, но, похоже, не понимаю ее! Я использую codeigniter и использую базу данных для сеансов. Поэтому мне интересно, как заголовок может быть слишком большим. Есть ли способ проверить, что такое заголовок? или потенциально увидеть, что я могу сделать, чтобы исправить эту ошибку?
Дайте мне знать, если вам нужно, чтобы я размещал любые файлы conf или что-то еще, и я буду обновлять их по мере их запроса.
2012/12/15 11:51:39 [error] 2007#0: *5778 upstream sent too big header while reading response header from upstream, client: 24.63.77.149, server: jdobres.xxxx.com, request: "POST /main/login HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "jdobres.xxxxx.com", referrer: "http://jdobres.xxxx.com/"
UPDATE
Я добавил следующее в conf:
proxy_buffer_size 512k;
proxy_buffers 4 512k;
proxy_busy_buffers_size 512k;
И теперь я все еще получаю следующее:
2012/12/16 12:40:27 [error] 31235#0: *929 upstream sent too big header while reading response header from upstream, client: 24.63.77.149, server: jdobres.xxxx.com, request: "POST /main/login HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "jdobres.xxxx.com", referrer: "http://jdobres.xxxx.com/"
Ответы
Ответ 1
Добавьте это в свой http {}
файла nginx.conf, который обычно находится в /etc/nginx/nginx.conf:
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
Затем добавьте это в свой блок местоположения php, он будет находиться в вашем файле vhost для поиска блока, который начинается с location ~.php ${
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
Ответ 2
Измените конфигурацию nginx и измените/установите следующие директивы:
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
Ответ 3
Я доказал, что это также отправляется, когда передается недопустимый заголовок. Недопустимые символы или форматирование заголовков HTTP, истечение срока действия cookie, заданных более чем на месяц, и т.д. Все это приведет к тому, что: восходящий поток отправил слишком большой заголовок при чтении заголовка ответа вверх по течению
Ответ 4
с помощью nginx + fcgiwrap + запрос слишком долго
У меня была такая же проблема, потому что я использую конфигурацию nginx + fcgiwrap:
location ~ ^.*\.cgi$ {
fastcgi_pass unix:/var/run/fcgiwrap.sock;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME /opt/nginx/bugzilla/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
# attachments can be huge
client_max_body_size 0;
client_body_in_file_only clean;
# this is where requests body are saved
client_body_temp_path /opt/nginx/bugzilla/data/request_body 1 2;
}
и клиент выполнял запрос с URL-адресом, который составлял около 6000 символов (запрос bugzilla).
отладки...
location ~ ^.*\.cgi$ {
error_log /var/log/nginx/bugzilla.log debug;
# ...
}
Это то, что я получил в журналах:
2015/03/18 10:24:40 [debug] 4625#0: *2 upstream split a header line in FastCGI records
2015/03/18 10:24:40 [error] 4625#0: *2 upstream sent too big header while reading response header from upstream, client: 10....
Можно ли "414 request-uri too large" вместо "502 bad gateway"?
Да, вы можете!
Я читал Как установить допустимую длину URL-адреса для запроса nginx (код ошибки: 414, слишком большой uri), потому что я думал, что "слишком длинный URL-адрес", но Я получал 502
, а не 414
.
large_client_header_buffers
Попробуйте # 1:
# this goes in http or server block... so outside the location block
large_client_header_buffers 4 8k;
Это не удается, мой URL - 6000 символов < 8k. Попробуйте №2:
large_client_header_buffers 4 4k;
Теперь я больше не вижу 502 Bad Gateway
, и вместо этого вижу a 414 Request-URI Too Large
"upstream разделяет строку заголовка в записях FastCGI"
Было ли какое-то исследование и найдено где-то в Интернете:
Этого было достаточно для меня:
location ~ ^.*\.cgi$ {
# holds request bigger than 4k but < 8k
fastcgi_buffer_size 8k;
# getconf PAGESIZE is 4k for me...
fastcgi_buffers 16 4k;
# ...
}
Ответ 5
Я столкнулся с этой проблемой в прошлом (не используя codeigniter, но это происходит всякий раз, когда ответы содержат много данных заголовка) и привык к настройке буферов, как это предлагается здесь, но в последнее время я снова укусил эту проблему, и буферы были, очевидно, в порядке.
Оказалось, что это была ошибка spdy, которую я использовал в этом конкретном проекте, и решил, включив сжатие заголовков spdy следующим образом:
spdy_headers_comp 6;