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

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


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

NGINX通过允许在客户端和后端服务器之间建立隧道来支持WebSocket。 对于NGINX将来自客户端的升级请求发送到后端服务器,必须明确设置升级和连接标头,如下例所示:

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/

希望这会有所帮助!

链接地址: http://www.djcxy.com/p/96421.html

上一篇: Why use nginx as websocket proxy?

下一篇: cannot set proxy on node.js