NGINX
我正在开发一个由安装在 Linux 平台上的Web 服务器提供服务的网站。该网站提供的服务之一是基于WebSocket后端服务器。
更具体地说,NGINX 配置规定,当 NGINX 从客户端接收到以下类型的请求时:
GET /websockify HTTP/1.1
请求被重定向(代理)到WebSocket后端服务器。这些配置是通过以下设置块实现的:
location /websockify {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
嗅探Wireshark我看到客户端发送了一个HTTP请求,HTTP请求中包含以下2个标头:
Connection: Upgrade
Upgrade: websocket
NGINX 发送以下类型的 HTTP 响应:
101 Swiching Protocols
之后(根据 Wireshark 信息),通信从 HTTP 切换到称为WebSocket我不知道。
有时,我的 Firefox 浏览器(在这种情况下显然是作为客户端工作)会停止工作,并且无法与 WebSocket 后端服务器建立连接。
为了确保网站配置中不存在一些错误,我想问一下:协议切换是由浏览器实现的吗?切换之后,浏览器开始以与切换之前不同的方式发送数据?
感谢有关此主题的所有其他信息。
谢谢
答案1
这WebSocket 维基百科页面似乎有一个很好的概述,并且在页面的更下方,描述了客户端和服务器代码用于将协议从 HTTP 切换到 WebSocket 的握手。