【问题标题】:How to configure Nginx virtual host to run C++ programms with FastCGI?如何配置 Nginx 虚拟主机以使用 FastCGI 运行 C++ 程序?
【发布时间】:2015-09-26 11:33:27
【问题描述】:

我想创建 C++ 网站,我处于零水平。需要使用 nginx + fastcgi 运行我的第一个 c++ 文件

我在 c++ 上有一个编译好的程序:

#include <iostream>
using namespace std;

int main ()
{

   cout << "Content-type:text/html\r\n\r\n";
   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>Hello World - First CGI Program</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";
   cout << "<h2>Hello World! This is my first CGI program</h2>\n";
   cout << "</body>\n";
   cout << "</html>\n";

   return 0;
}

这样编译的:

g++ 1.cpp -lfcgi -o 你好

并放到站点目录:/var/www/f.ci/public/bin/hello

然后开始生成过程:

spawn-fcgi -a 127.0.0.1 -p 8000 -n /var/www/f.ci/public/bin/hello

nginx虚拟主机配置为:

server
{
    listen  80;
    server_name     f.ci www.f.ci *.f.ci;
    root            /var/www/f.ci/public;

    location /
        {
        try_files   $uri $uri/  =404;
        }

        location ~ \.php$ 
        {
        try_files $uri =404;
                include fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        }

}

确切地说,这是文件 /etc/nginx/fastcgi_params :

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     $request_filename;
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   GATEWAY_INTERFACE   CGI/1.1;
fastcgi_param   SERVER_SOFTWARE     nginx/$nginx_version;

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;

fastcgi_param   HTTPS           $https if_not_empty;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS     200;

我在配置虚拟主机时重新启动了 nginx。 当我在浏览器中输入时,我的服务器让我下载 hello 文件: f.ci/bin/你好 但不显示它的消息

请问如何正确配置服务器?

【问题讨论】:

    标签: c++ nginx


    【解决方案1】:

    你有错误的端口“fastcgi_pass 127.0.0.1:9000;”
    将 9000 更改为 8000

    “spawn-fcgi -a 127.0.0.1 -p 8000 -n /var/www/f.ci/public/bin/hello” "fastcgi_pass 127.0.0.1:9000;"

    端口号必须匹配。

    【讨论】:

    • 好的。但在我的服务器中不起作用。更多:我从 update.rc 中删除了 nginx 以加快我的 comp。其他 php5-fpm 和 mysql 也被删除。当我想尝试使用我的服务器工作时,我只做:服务 nginx 启动,然后我输入 spawn 命令,但不能使用正确的端口。现在怎么了?
    猜你喜欢
    • 2014-02-23
    • 2011-02-22
    • 1970-01-01
    • 2016-09-27
    • 2012-12-24
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多