我们正在开发一种网络服务,我们软件的所有功能都通过内部网络服务器公开。公司客户通过浏览器连接到该服务器,执行任务,注销,工作就完成了。
但是这个内部 Web 服务器是一款相当简单的软件,或者怎么说呢,它不是那么容易配置,不是很灵活,会自行处理,满足客户的需求,而且或多或少已经完成了。或者更好地理解它:不支持负载平衡、SSL 或任何可信赖 Web 服务所需的功能。
因此,我们做出了一个重大决定,我们需要将这个内部组件“隐藏”在本地网络中,并将一个面向互联网的工业强度 Web 服务器放置起来,以便能够访问我们的服务(该服务器将以某种方式与内部服务器通信)。由于这个内部组件进行的计算非常耗时,我们希望至少有两个(截至 2015 年 12 月)组件在本地网络中运行,对外部网络完全不可见,并以某种方式在它们之间分配工作。
现在,问题来了。我们所有人或多或少都是数据库或算法程序员,我们几乎不知道如何(正确地)设置网络服务器(不,我们没有预算聘请任何人来做这件事,但我们愿意学习所需的步骤),现在知道如何制作“网络线路”部分。
以下是“要求”:工业强度的网络服务器平台将是 Linux(我们考虑使用 apacher,但是请在了解要求的情况下建议您认为重要的任何内容),内部组件也可以在 Linux 上运行。
目前将有 3 台计算机。其中一台面向互联网,具有公共 IP,将托管 Web 服务器。我们计划安装 SSL 并获取证书,以便拥有 https 接口(至少这是正确的吗?)。
这台计算机上的服务器需要与另外两台计算机通信,托管两个内部网络服务器(如果我没记错的话,这称为转发),最好选择一台没有忙于处理客户请求的服务器(如果我没记错的话,这就是负载平衡)。
一些技术信息:
内部计算机处理的请求形式如下:
请求GET
如下:
https://somecompanysoftware.com/SOME_LONG_REQUEST_STRING_WITH_SOME_DATA_IN_IT
并且渲染了相应的网页(来自 URL 中的数据),但也有POST
请求,例如:
https://somecompanysoftware.com/SOME_LONG_REQUEST_STRING_WITH_SOME_OTHER_DATA_IN_IT
并且请求中有POST
数据(例如客户端上传图片等...)
并且一定会渲染出该URL数据对应的网页。
面向互联网的 Web 服务器(apache)应该使用相应的 URL 连接到本地 Web 服务器,并传递所需的 POST 数据以供后续使用,这一点非常重要。
我还读到过,apacahe 网络服务器可以让用户创建模块,所以我们考虑创建一个模块,该模块在收到互联网请求后,会向其中一个内部网络服务器创建一个“本地”请求,发送数据,等待答复,然后将答复发送回浏览器。
问题:我只是想知道,是否有一种方法可以使这更容易(比编写新的 apache 模块)或者这是唯一的方法。
答案1
您是否希望面向公众的服务器作为缓存反向代理运行?您可以配置 Apache(和大多数 Web 服务器)来执行此操作,但您可能需要考虑使用 Squid:
答案2
我肯定会设置 2 个 apache 服务器,并在其中设置一个 haproxy 服务器。根据您获得的证书(主机名或通配符),您可以决定是否希望 apache 服务器也拥有该证书。
换句话说。如果您获得了主机名证书,则您可以在 hproxy 上使用该证书,然后该证书也会终止 SSL 连接。然后,您可以将流量以明文形式传递到 apache 服务器。
另一方面,如果您获得了通配符证书,则可以在 haproxy 和 apache 服务器上使用它。
如果您需要有关 haproxy 设置方面的帮助,请大声喊出来。
红松属