最近项目中有开发同学使用了websocket协议,由于公司架构,前边还是拿nginx作为代理接入层,所以记录下nginx的websocket配置和实际过程中的一些注意事项:
nginx的websocket配置:
location ^~ /websocket/ {
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_pass http://group/;
proxy_set_header X-Real-IP $remote_addr;
proxy_intercept_errors on;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
WebSocket协议和HTTP协议不同,但是WebSocket协议的握手和HTTP是兼容的,
- 它使用HTTP的Upgrade协议头将连接从HTTP连接升级到WebSocket连接。这个特性使得WebSocket应用程序可以很容易地应用到现有的基础设施。例如,WebSocket应用可以使用标准的80和443 HTTP端口,因此可以通过现有的防火墙设施
- HTTP的Upgrade协议头机制用于将连接从HTTP连接升级到WebSocket连接,Upgrade机制使用了Upgrade协议头和Connection协议头
- Nginx通过在客户端和后端服务器之间建立隧道来支持WebSockets通