hnd*_*ndr 9 port port-forwarding socket
我正在使用 nginx 来为 PHP 应用程序的实例提供服务,同时还运行一个 Ratchet 应用程序来侦听 websocket 连接。问题是,这两个实例都使用相同的端口 (80)。
如何设置服务器以便我可以同时提供两者?
编辑:刚回来看到这个问题已经被否决了好几次,可以理解的是,我并没有真正清楚地提出这个问题。我为此道歉。不过,我确实做了尽职调查。我会试着澄清我在问什么,我可能误解了 websocket 协议的某些方面,在这种情况下,请纠正我:
我很清楚只能有一个进程侦听特定端口,我实际上遇到了一些问题,这是整个 websocket 的事情,据我所知,websocket 请求以 HTTP 握手开始,之后会有机制将该会话“升级”到特定端口。
从我阅读的内容来看,这种升级机制似乎是由网络服务器处理的。那么,如何配置nginx来处理这个过程呢?
总而言之,我担心在 80 以外的端口上运行 websocket 服务器的一件事是端口被阻塞的可能性。这种担忧是没有根据的?关于我应该如何设置的任何建议?
hnd*_*ndr 17
一个写得很糟糕的问题,但我正在寻找的术语是反向代理。
基本上,就像 nginx 如何根据路径或主机名将不同的请求转发到 web 应用程序的多个实例一样,它也可以配置为将请求“转发”到 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;
}
Run Code Online (Sandbox Code Playgroud)
HTTP 请求http://hostname
将被提供给通常的 html 页面,而 websocket 连接wss://hostname/socket
将被转发到同一服务器上侦听端口 8000 的 websocket 实例。
归档时间: |
|
查看次数: |
30909 次 |
最近记录: |