Nginx 反向代理 websocket
有没有办法编译 nginx 来处理反向代理 websockets 请求?我正在 Node.JS 中构建一个实时应用程序,并且在此基础上需要一个 Web 服务器。我读过的所有内容都说 Nginx 无法反向代理 websockets 请求,所以我对如何解决这个问题有点困惑。
我正在考虑在 Node 中实现所有服务器逻辑,但这种方法存在一些问题
1) PHP - 我需要一种提供 PHP 文件的方法 2) 静态文件 - 我真的很喜欢 nginx 对于静态文件的速度非常快。不过,有一些模块可以解决这个问题,所以这个问题并不是太大。 3)当我需要更新我的节点应用程序时,我希望能够与主服务器分开重新启动该部分。另外,如果 Node 应用程序由于某种原因崩溃,我不希望整个 Web 服务器宕机!
Is there a way to compile nginx to handle reverse proxying websockets requests? I'm building a realtime app in Node.JS and need a web server on top of this. Everything I've read says Nginx cannot reverse proxy websockets requests, so I'm a little confused on how I should approach this problem.
I was thinking about just implementing all server logic in Node, but there are some problems with this approach
1) PHP - I need a way to serve PHP files
2) Static files - I really like that nginx is very fast for static files. There are some modules for this, though, so this problem isn't too big.
3) When I need to update my Node app, I would like to be able to restart that part separately from the main server. Also, if the Node app crashes for some reason, I don't want the whole web server to go down!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最简单的解决方案是在 nginx 中为多个子域设置虚拟主机,并在单独的子域上运行每个服务。这样您就不必担心区分同一端口上的 websockets 请求和标准 http 请求。
另外,您可以使用 PHP-FPM 在 nginx 后面运行 php,但这对工作来说是一个很大的挑战,因此 Apache 可能是更好的选择。
The simplest solution would be to setup virtual hosts in nginx for multiple subdomains and run each service on a separate one. That way you don't have to worry about distinguishing websockets requests from standard http requests on the same port.
Also, you can run php behind nginx using PHP-FPM but that's quite a challenge to get working, and for that reason Apache may be a better choice.
我正在做类似的事情,这是对我有用的nginx服务器配置(文件:MY_DOMAIN.tk.conf on:/etc/nginx/config.d/),其中:
在端口 8000 上运行的 websockets 服务器的 Nodejs 反向代理。
通过这样做,您可以连接到 wss://MY_DOMAIN.tk/ws
I am doing something similar, here is the nginx server config( file: MY_DOMAIN.tk.conf on: /etc/nginx/config.d/) that work for me, with:
nodejs reverse proxy for websockets server running on port 8000.
by doing this then you can conect to wss://MY_DOMAIN.tk/ws