gpt4 book ai didi

javascript - 为什么使用 nginx 作为 websocket 代理?

转载 作者:数据小太阳 更新时间:2023-10-29 05:29:01 27 4
gpt4 key购买 nike

所以我一直在阅读整个服务器设置,其中 Nginx 在 nodejs 前面用作反向代理,以便它提供静态内容,同时允许 Node 执行动态内容。我的问题是,为什么有人要使用 nginx 前端来反向代理到 websocket?如果 nginx 提供静态内容(HTML、CSS、JS、媒体等),那么提供的 JS 文件不能直接使用 ip 地址和 websocket 在 nodejs 中监听的端口直接连接到服务器服务器?为什么要通过nginx去连接服务器上的websocket呢?还是我没有清楚地了解这种情况?谢谢!

最佳答案

WebSocket 应用程序在客户端和服务器之间保持打开的长期连接,从而促进实时应用程序的开发。用于将连接从 HTTP 升级到 WebSocket 的 HTTP 升级机制使用 Upgrade 和 Connection header 。反向代理服务器在支持 WebSocket 方面面临一些挑战。一是 WebSocket 是逐跳协议(protocol),因此当代理服务器拦截来自客户端的升级请求时,它需要将自己的升级请求发送到后端服务器,包括适当的 header 。此外,由于 WebSocket 连接是长期存在的,而不是 HTTP 使用的典型的短期连接,反向代理需要允许这些连接保持打开状态,而不是因为它们看起来空闲而关闭它们。

NGINX 通过允许在客户端和后端服务器之间建立隧道来支持 WebSocket。为了让 NGINX 将升级请求从客户端发送到后端服务器,必须明确设置升级和连接 header ,如本例所示:

location /wsapp/ {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

完成后,NGINX 将其作为 WebSocket 连接进行处理。

更多详情请访问:- https://www.nginx.com/blog/websocket-nginx/ https://blog.martinfjordvald.com/2013/02/websockets-in-nginx/

希望这会有所帮助!

关于javascript - 为什么使用 nginx 作为 websocket 代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com