将apache请求转发到c++程序

Forwarding apache request to a c++ program

本文关键字:c++ 程序 转发 apache 请求      更新时间:2023-10-16

我基本上是在寻找如何解决这个问题的技巧和窍门。

我有一个服务器软件(Linux),它是用C++编写的。我需要做的是通过对apache Web服务器的http调用。

当然,也可以将数据存储在数据库中并为其编写servlet,或者使用IPC来获取数据,但我希望保持简单并将其捆绑在一个文件中。我也想知道这个想法是否可行。

因此,工作流程如下所示:客户端->Apache Web服务器->C++软件

是否有任何现有的库或其他东西可以处理Apache;C++连接?或者它会像是将请求重定向到c++中的套接字并手动执行?基本上类似于tomcat连接器。

编辑

请注意,服务器软件是在后台永久运行的,不应该是";"启动";通过调用

有几个选项。

CGI很简单,并且一直存在。在CGI下,web服务器将为每个web请求生成一个单独的进程。正如您在评论中提到的,您可以编写一个CGI脚本,对您的C++程序进行RPC调用。

FastCGI是CGI的替代方案;它没有为每个web请求生成一个单独的进程,而是定义了一个协议,让web服务器将多个web请求分派给一个长期运行的进程。它适用于web应用程序。然而,对于您的场景,如果您有一个预先存在的服务器进程,需要添加一个web界面,它可能无法正常工作;基于我有限的理解,web服务器通常希望自己启动和停止长时间运行的FastCGI进程(以响应传入请求、服务器负载、空闲时间等),而不是连接到预先存在的FastCGI过程。(我想,大多数服务器都会让你重新配置,但这不是默认的。)

你也可以在C++进程中嵌入一个像Mongoose或cpp-netlib这样的web服务器,并设置Apache代理请求。这可能是你最好的方法。(例如,Mongoose非常容易嵌入。)

最后,您可以使用一个完整的Apache模块(将您的C++服务器重新设计为Apache模块,或者使用一个Apache模块与您的C++服务进行通信)。这可能比你想做的更复杂,尽管有像CPPSERV这样的现有项目采用这种方法。