gpt4 book ai didi

c++ 和 fastcgi - 上游在读取来自上游的响应 header 时过早关闭 FastCGI stdout

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:07 27 4
gpt4 key购买 nike

我正在使用 nginx、factcgi 和 spawn-fcgi 并试图让它工作。

我按如下方式启动 spawn-fcgi:

g++ rtbTimeSeries.cpp -o forecast.fcgi -I/home/ubuntu/cpp/boost_1_52_0/ -I/home/ubuntu/cpp/NR_C301/ -lfcgi++ -lfcgi
spawn-fcgi -a 127.0.0.1 -p 8010 -n forecast.fcgi

当我去

http://127.0.0.1:83/forecast.fcgi 

我收到 502 错误

当我从命令行查看 spawn-fcgi 的输出时,我看到了正确的输出...请参阅帖子的最底部:

在 nginx 日志中我得到这个:

2013/02/21 19:42:39 [error] 16342#0: *39 upstream closed prematurely FastCGI stdout while reading response header from upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /forecast.fcgi HTTP/1.1", upstream: "fastcgi://127.0.0.1:8010", host: "127.0.0.1:83"

这是我的 C++ 代码:

int main() {
FCGX_Init();
while(FCGI_Accept() >= 0){
printf("Content-type: text/html\r\n"
"\r\n"

"<title>FastCGI Hello!</title>"
"<h1>FastCGI Hello!</h1>"
"Request number %d running on host <i>%s</i>\n",
++count, getenv("SERVER_NAME"));
}
return 0;
}

这是我的 nginx.conf 部分:

server {
listen 83;
server_name 127.0.0.1;

location / {
fastcgi_pass 127.0.0.1:8010;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}


}

下面是我在浏览器中点击 url 时控制台的输出。

spawn-fcgi -a 127.0.0.1 -p 8010 -n forecast.fcgi
Content-Type: text/plain

Hello world in C
Content-type: text/html

<title>FastCGI Hello!</title><h1>FastCGI Hello!</h1>Request number 1 running on host <i>127.0.0.1</i>
Content-Type: text/plain

Hello world in C
Content-type: text/html

<title>FastCGI Hello!</title><h1>FastCGI Hello!</h1>Request number 2 running on host <i>127.0.0.1</i>
Content-Type: text/plain

Hello world in C
Content-type: text/html

<title>FastCGI Hello!</title><h1>FastCGI Hello!</h1>Request number 3 running on host <i>127.0.0.1</i>
Content-Type: text/plain

Hello world in C
Content-type: text/html

<title>FastCGI Hello!</title><h1>FastCGI Hello!</h1>Request number 4 running on host <i>127.0.0.1</i>
Content-Type: text/plain

Hello world in C
Content-type: text/html

<title>FastCGI Hello!</title><h1>FastCGI Hello!</h1>Request number 5 running on host <i>127.0.0.1</i>

最佳答案

是否需要#include "fcgi_stdio.h"?

如果我从头开始编写应用程序,我会显式使用 FCGI_printf 而不是依赖 fcgi_stdio.h 中的#define 魔法。

关于c++ 和 fastcgi - 上游在读取来自上游的响应 header 时过早关闭 FastCGI stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15001480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com