Nginx是一个广受欢迎的Web服务器系统,市场份额即将超越位居第二的IIS,目前,世界上访问量最大的网站中,有30%使用了Nginx。因此,支持WebSocket是Nginx社区中的一个非常大的需求。Nginx支持WebSocket,这允许用户扩展和简化基于Nginx的实时Web应用程序和平台。
WebSocket是HTML5中的一种新协议,实现了浏览器与服务器全双工通信。传统Web服务中,为了实现即时通信,所用的技术是轮询(polling),是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客服端浏览器。这样浏览器需要不断向服务器发出请求,这样会占用很多的带宽。
通过WebSocket API,浏览器和服务器只需要做一个握手动作,然后,浏览器和服务器之间就形成了一条快速通道,可以直接互相传送数据。
参考链接:http://nginx.org/en/docs/http/websocket.html
http {
.....
map $http_upgrade $connection_upgrade {
default upgrade;
‘‘ close;
}
server {
...
location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
/opt/server/nginx/sbin/nginx -v 查看nginx的版本
nginx version: nginx/1.4.7
/opt/server/nginx/sbin/nginx -t 检查nginx的配置文件
/etc/init.d/nginx restart 重启nginx
注:
在服务器端,也出现了一些实现websocket协议的项目:
apache tomcat 7.0.27 版本
Nginx 1.3.13 版本
jWebSocket java实现版