出于性能原因,我不得不重写我们网络基础设施的一部分。
为此,我将关键部分编写为 C++ 中的 Web 应用程序。此 Web 应用程序侦听给定端口,一次只接受一个 TCP 连接,并处理它在当前连接上接收到的所有 HTTP 请求。
你可以这样启动它来监听 8080 端口:
./webapp 8080
尽管它比以前完美无缺且运行速度更快,但它的局限性在于应用程序的一次连接一次的性质。您不能仅通过一个应用程序实例通过多个连接同时提供 HTML 页面、Javascript 和图像。
为了克服这个限制,我想运行一个前端反向代理 HTTP 服务器,它侦听端口 80,并在后台运行的 Web 应用程序的多个实例上均匀地重定向传入的 HTTP 请求。这些实例可以在启动时创建,如下所示:
./webapp 10000
./webapp 10001
./webapp 10002
./webapp 10003
./webapp 10004
./webapp 10005
./webapp 10006
./webapp 10007
./webapp 10008
./webapp 10009
前端应配置为在启动时与每个 Web 应用程序建立永久HTTP 连接,然后将传入的 HTTP 请求转发到正在运行的 Web 应用程序之一,均匀分布它们。
反向代理还应该支持从客户端到自身的 SSL。支持 SPDY 将是一个加分项,但不是必须的。
我的问题是:在我的场景中,哪些 HTTP 反向代理可以用作前端?如果你知道不止一个,每个的优点和缺点是什么?