我正在使用nginx来服务PHP应用程序的一个实例,并且同时运行一个Ratchet应用程序来侦听一个websocket连接。 问题是,这两个实例都使用相同的端口(80)。
我如何设置服务器,以便我可以同时服务?
编辑:刚回来看到这个问题已经下了好几次,可以理解的是,我没有真正清楚地问这个问题。 我为此道歉。 尽pipe我做了尽职调查。 我会尝试澄清我所问的,我可能误解了websocket协议的某些方面,在这种情况下,请纠正我:
我很清楚,只有一个进程监听一个特定的端口,实际上我遇到的一些问题是整个websocket的事情,据我所知,一个websocket请求以HTTP握手开始,之后会有一个机制将该会话“升级”到特定的端口。
从我周围看来,这个升级机制似乎是由networking服务器处理。 那么,如何configurationnginx来处理这个过程呢?
总而言之,我关心的是在80端口以外的端口上运行websocket服务器的一件事是端口被阻塞的可能性。 这种担忧是没有根据的吗? 任何build议,我应该如何设置?
一个非常写的问题,但我期待的这个词是反向代理。
基本上,就像nginx可以根据path或主机名将不同的请求转发到Web应用程序的几个实例一样,也可以将其configuration为将请求“转发”到websocket服务器实例。 例如:
location /socket { proxy_pass http://websocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } upstream websocket{ server localhost:8000; } map $http_upgrade $connection_upgrade { default Upgrade; '' close; }
对http://hostname HTTP请求将服务于通常的html页面,而websocket连接到wss://hostname/socket将被转发到监听端口8000的同一服务器上的websocket实例。
服务器不能有两个不同的软件侦听相同的端口/ IP地址。 否则,如果多个应用程序可以绑定到相同的端口,那么如何将stream量路由到应用程序XYZ?
您可以从端口(计算机networking)了解更多关于端口的信息
您需要做的是以下任一选项:
您的防火墙只需要根据您的设置进行configuration。
你有两个select: