【Nginx】websocket配置

       简单点说,WebSocket 就是减小客户端与服务器端建立连接的次数,减小系统资源开销,只需要一次 HTTP 握手,整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直与客户端保持连接,直到你关闭请求,同时由原本的客户端主动询问,转换为服务器有信息的时候推送。当然,它还能做实时通信、更好的二进制支持、支持扩展、更好的压缩效果等这些优点。

      Nginx 自从 1.3 版本就开始支持 WebSocket 了,并且可以为 WebSocket 应用程序做反向代理和负载均衡。

      WebSocket 和 HTTP 协议不同,但是 WebSocket 中的握手和 HTTP 中的握手兼容,它使用 HTTP 中的 Upgrade 协议头将连接从 HTTP 升级到 WebSocket,当客户端发过来一个 Connection: Upgrade 请求头时,Nginx 是不知道的,所以,当 Nginx 代理服务器拦截到一个客户端发来的 Upgrade 请求时,需要显式来设置 Connection 、 Upgrade 头信息,并使用 101(交换协议)返回响应,在客户端和代理服务器、后端服务器之间建立隧道来支持 WebSocket。

Nginx.conf修改如下所示:

# map指令:根据变量 $http_upgrade 的值创建新的变量 $connection_upgrade,创建的规则就是{}里面的东西。若其中的规则没有匹配的,因此使用默认的,即 $connection_upgrade 的值会一直是 upgrade。然后如果 $http_upgrade为空字符串的话,那值会是 close

map $http_upgrade $connection_upgrade {

    default 'upgrade';

    '' 'close';

}

 

#server

server {

    server_name "";

    listen 80;

 

# http版本为1.1

proxy_http_version 1.1;

#核心,它表明是websocket连接进入的时候,进行一个连接升级,将http连接变成websocket的连接。

    proxy_set_header   Upgrade $http_upgrade;

    proxy_set_header   Connection $connection_upgrade;

 

location / {

#若只有一个location,也可直接写在location中

#proxy_set_header   Upgrade $http_upgrade;

           #proxy_set_header   Connection $connection_upgrade;

        proxy_pass http://server_frontend;

    }

    

}

 

官网:http://nginx.org/en/docs/http/websocket.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值