gpt4 book ai didi

c++ - 如何在 NGINX 服务器上运行 C++ CGI 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 12:38:56 25 4
gpt4 key购买 nike

我在/etc/nginx/conf.d 中创建的名为“helloworld.local.conf”的配置文件中写了以下几行。

server{
listen 80 default_server;
server_name hello_world;
location / {
root /var/www/helloworld;
fastcgi_pass 127.0.0.1:9000;
}
}

/var/www/helloworld 中有一个 index.html 文件显示文本“网站即将推出”。

我的 C++ 代码如下所示:

#include <iostream>
#include "fcgio.h"

using namespace std;

int main(void) {
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</h2>\n";
cout<<"</body>\n";
cout<<"</html>\n";
return 0;
}

我有使用以下命令生成的 C++ 二进制代码文件

g++ abc.cpp -lfcgi++ -lfcgi -o hello_world

需要部署在NGINX服务器上。我搜索并尝试了不同的方法来在 stackoverflow 上运行这个脚本,但仍然遗漏了一些东西。

我还运行了以下命令将 C++ 二进制代码文件连接到服务器

cgi-fcgi -start -connect 127.0.0.1:9000 ./hello_world

现在,当我在浏览器中访问地址 127.0.0.1:9000 时,没有得到 C++ 代码中的“hello world”文本。

输出:我想从 C++ 二进制代码中得到“hello world”响应,并将其显示在 html 页面上。

我缺少什么请帮助。

更新:现在这是我的配置文件。

server{
server_name hello;
location / {
fastcgi_index index.cgi;
root /var/www/helloworld;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_name;
include fastcgi_params;
}
}

最佳答案

更新

看看这个blog post .它解释了如何非常彻底地设置 C++/FCGI/nginx。


原始答案

您的 C++ 代码应该是一个监听器(当它运行时,它应该监听一个端口并根据传入请求返回响应)。这部分与 nginx 无关。所以首先要确保你的代码工作正常;运行您的代码并尝试访问指定的端口,看看您是否得到预期的响应。

然后您需要在您的 nginx 配置中设置一个代理,它基本上将您想要的所有流量重定向到您的 C++ 端口(例如 9000)。例如,您可以对其进行设置,以便 https://your_domain.com/api/* 形式的任何 url 重定向到您的 C++。

这在 nginx 中非常简单:

location /api/ {
proxy_pass http://127.0.0.1:9000/;
}

但首先单独测试你的 C++,并确保它工作正常

此外,您最好使用 runitsystemd 或类似工具来保持您的 C++ 监听器运行(如果它崩溃,请重新启动它)。

关于c++ - 如何在 NGINX 服务器上运行 C++ CGI 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55178973/

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