Upstream split a header in FastCGI

Igor Sysoev is at rambler-co.ru
Fri Feb 17 19:47:51 MSK 2006


On Fri, 17 Feb 2006, Grigory Batalov wrote:

> Хочу настроить FastCGI, но получаю постоянно ошибку
> "502 Bad Gateway". В error.log пишут:
>
> 2006/02/17 18:57:51 [alert] 15689#0: *46 upstream split a header in FastCGI records while reading response header from upstream, client: 127.0.0.1, server: localhost, URL: "/trac/", upstream: "fastcgi://127.0.0.1:1027"
>
> Что бы это могло означать?

> Если интересно, этот самый trac.fcgi также пишет в (свой) лог:
>
> Feb 17 18:57:50 fcgi: read: fd = 7, type = 1, requestId = 1, contentLength = 8
> Feb 17 18:57:50 fcgi: read: fd = 7, type = 4, requestId = 1, contentLength = 57
> Feb 17 18:57:50 fcgi: read: fd = 7, type = 4, requestId = 1, contentLength = 0
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 13
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 32
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 40
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 39
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 22
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 113
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 2
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 7147
> (далее HTML текст на 7147 байт)
> Feb 17 18:57:51 fcgi: protocolStatus = 0, appStatus = 0
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 6, requestId = 1, contentLength = 0
> Feb 17 18:57:51 fcgi: write: fd = 7, type = 3, requestId = 1, contentLength = 8
> (8 нулевых байт)
> Feb 17 18:57:51 fcgi: end_request: flags = 0
>
> Вроде бы всё нормально, но nginx ругается.

Это сообщение означает, что fastcgi сервер послал запись stderr
в то время, пока ещё не до конца выведен заголовок ответа (он выводится
в записях stdout). Хотя, судя по логу, записей (type = 7) stderr нет.

Такая обработка stderr во время чтения заголовка - это багофича nginx'а.
Однако в данном случае, похоже, stderr нет.

Можно сделать следующее:

1) в файле src/http/modules/ngx_http_fastcgi_module.c найти две строки
    "upstream split a header in FastCGI records" и поменять в них
    split на split1 и split2.

2) запустить nginx с отладочныи логом (желательно поставить
    worker_processes 1), сделать запрос и лог прислать мне.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list