在同一端口上运行多个服务器


19

我想在端口80上运行XAMPP服务器和Nodejs服务器。

如果服务器收到HTTP请求,则XAMPP将处理该请求;如果服务器收到Websocket请求,则Nodejs

这怎么可能?如果端口已在使用中,则无法启动其他服务器程序。

Answers:


45

您将需要使用反向代理来执行此操作,例如Apache 2.4。使用mod_proxy_wstunnel

将其用作前端,然后将连接隧道传输到适当的后端。


22

只有一个进程可以在特定端口上侦听相同的IP地址和协议,因为否则操作系统将不知道将接收到的数据包发送到哪个进程。

要实现您想要的功能,您将必须使用反向代理,该代理将侦听端口80并将流量转发到正确的目的地。有多种方法可以做到这一点。例如,您可以将Web服务器(Apache)设置为转发WebSocket请求,也可以将Node.js配置为转发HTTP通信。研究可用的选项,然后选择最适合您的需求。


3

就像其他已经提到的反向代理选项一样,您可以为计算机分配多个IP地址。这可能需要支付IPv4费用(或者根本无法使用,具体取决于您托管服务器的位置),但是如果您可以使用IPv6(例如,连接到这两者或其中之一的人或您的服务将要具有IPv6功能)则不需要。这样,两种服务都可以在不同地址的端口80上侦听。

正如您仅提及端口80一样,我假设您未使用HTTPS。如果您使用反向代理选项,则需要拥有多名称SSL证书或配置SNI并忍受某些旧客户端(XP上的IE,旧的Android版本)无法使用的事实。连接没有错误。多地址选项可以避免此问题,但需要分配额外的地址。


只是一点:如果您已经在使用NAT转换IP,则也可以在那里进行端口重定向。例如,如果您正在运行可访问Internet的Apache服务器,并希望使用XAMPP进行测试,请在非标准端口上运行Apache,并让路由器NAT外部端口80向内部IP的非标准端口发出请求。这将允许在端口80上运行的XAMPP
Calrion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.