2017-04-14 83 views
0

我有一个REST API由端口3000上的节点express服务器提供服务。使用socket.io,还有一个websocket连接到同一端口上的express服务器。如何配置nginx将websockets转发到不同的进程

为了扩展我们的节点服务器,我们决定WebSocket的服务器分裂成一个全新的过程,并将它举办一个新的端口(3002)

如何配置nginx的转发上所有websocket消息都转发到端口3002上的新进程,并将所有其他消息转发给端口3000上的原始REST API服务器?

+0

你有没有尝试过这样的: https://www.nginx.com/blog/websocket-nginx/ –

+0

@ErkiA我将如何指定哪个端口转发websockets与哪个端口转发常规http请求? –

回答

1

你只配置一个位置指令用于代理你的WebSocket服务器

location /websocket/ { 

    proxy_pass http://127.0.0.1:3002; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
} 

如果你的连接客户端是纯粹的WebSocket客户端,那么你可能需要WebSocket连接URL设置为ws://example.com/websocket/socket.io/?EIO=3&transport=websocket