配置nginx支持websocket基础文献


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实现版