如何配置Nginx虚拟主机运行c++程序与FastCGI

How to configure Nginx virtual host to run C++ programms with FastCGI?

本文关键字:c++ 运行 程序 FastCGI 虚拟主机 Nginx 何配置 配置      更新时间:2023-10-16

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

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

#include <iostream>
using namespace std;
int main ()
{
   cout << "Content-type:text/htmlrnrn";
   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 hello

放到站点目录:/var/www/f.c.i/public/bin/hello

then started spawn process:

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;

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

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

您有错误的端口"fastcgi_pass 127.0.0.1:9000;"
将9000改为8000

"spawn-fcgi - 127.0.0.1 -p 8000 -n/var/www/f.c.i/public/bin/hello"fastcgi_pass 127.0.0.1:9000;"