写在开始

去年,做过一款竞赛打分的APP。具体需求,同组教师之间可以相互通信,及时通知同组人员,其他组员做了那些操作(当然,这只是针对特定操作)。

实现方案

采用目前比较成熟的WebSocket技术,WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类app的方法来说,其能使开发更加地简单。大部分现在的浏览器都支持WebSocket,比如Firefox,IE,Chrome,Safari,Opera,并且越来越多的服务器框架现在也同样支持WebSocket。

WebSocket集群

在实际的生产环境中,要求多个WebSocket服务器必须具有高性能和高可用,那么WebSocket协议就需要一个负载均衡层,NGINX从1.3开始支持WebSocket,其可以作为一个反向代理和为WebSocket程序做负载均衡。

Nginx配置

注:看官方文档说 Nginx 在 1.3 以后的版本才支持 websocket 反向代理,所以要想使用支持 websocket 的功能,必须升级到 1.3 以后的版本

NGINX通过允许一个在客户端和后端服务器之间建立的隧道来支持WebSocket。为了NGINX发送来至于客户端Upgrade请求到后端服务器,Upgrade和Connection头部必须被设置明确。

代码实例:

前端配置:

最后,重启下Nginx即可。

反向代理服务器在支持WebSocket时面临的挑战

WebSocket是端对端的,所以当一个代理服务器从客户端拦截一个Upgrade请求,它需要去发送它自己的Upgrade请求到后端服务器,也包括合适的头。

因为WebSocket是一个长连接,不像HTTP那样是典型的短连接,所以反向代理服务器需要允许连接保持着打开,而不是在它们看起来空闲时就将它们关闭。

nginx反向代理配置 多个_实例分享:Nginx学习之反向代理WebSocket配置实例相关推荐

  1. nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题

    在前面写的一篇文章SpringMVC解决跨域问题,我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题,解决方式主要有如下三种方式: JSONP CORS WebSocket 可是这几种方式 ...

  2. cisco 模拟器安装及交换机的基本配置实验心得_网络工程师的Python之路 -- 自动监测网络配置变化...

    版权声明:我已加入"维权骑士"(http://rightknights.com)的版权保护计划,所有知乎专栏"网路行者"下的文章均为我本人(知乎ID:弈心)原创 ...

  3. cisco 模拟器安装及交换机的基本配置实验心得_「分享」7个必看的Cisco实验

    1.修改cisco 路由器的名称及路由器密码命令操作 实验要求: 1.路由器名:cisconet 2.设置password为cisconet,secret为cisconet,vty为cisconet, ...

  4. python零基础实例-零基础学习Python开发练习100题实例(1)

    零基础学习Python开发练习100题实例(1) 2018-02-25 09:37:59 2864浏览 1.题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序 ...

  5. nginx配置url重定向_详解nginx配置url重定向-反向代理

    https://www.jb51.net/article/99996.htm 本文系统:Centos6.5_x64 三台主机:nginx主机,hostname: master.lansgg.com  ...

  6. nginx中配置angular项目_强大,Nginx配置一键生成

    推荐阅读: 关于 JVM,都有哪些面试最常考的点需要重点掌握? 面试却被 Java 基础难住了?不要怕,我来带你一起手撕面试官阿里一线架构师分享的技术图谱,进阶加薪全靠它 前因 关于Nginx部署.配 ...

  7. nginx配置文件被删怎么找回_隔行如隔山之nginx服务器删除文件

    虽然我平时比较喜欢折腾博客网站,也喜欢折腾WordPress主题等,但是从未折腾过nginx服务器,就连我现在用的这台阿里云ECS服务器都是找张戈博主帮忙安装的,所以对于nginx服务器真的是一窍不通 ...

  8. mysql5.7复制集_技术分享 | 克隆:更优雅的创建 MySQL 实例副本

    背景 大多情况下,需要可靠而有效地克隆 MySQL 实例数据.这包括 MySQL 高可用的解决方案,其中需要在将实例加入组复制集群之前配置实例,或者在经典复制模型中将其添加为 Slave. 为复制拓扑 ...

  9. 锐捷交换机配置snmp版本_网工收藏必备——思科交换机常用SNMP配置命令分享

    简单网络管理协议(snmp)对于每个网络管理员来说说都是必需的.通过几个简单的命令,我们就可以对其进行配置.目前SNMP仍然是监视网络设备(包括cisco路由器和交换机)性能的流行方法.通过SNMP管 ...

  10. 工具类软件操作手册_全套广联达软件学习资料合集:教程+实例讲解+操作手册,一文搞定...

    要学习并掌握好算量软件,不仅仅需要软件知识,还需要各种造价相关知识,只有精通软件及造价知识,才能大大的提高算量的速度及准确度. 一个算量的高手掌握的不单是软件操作技术,还要掌握的是造价的基础知识,你要 ...

最新文章

  1. LeetCode: 111. Minimum Depth of Binary Tree
  2. 【408】C函数中的ADT
  3. php项目后的感受,PHP项目感受4 - 刘景刘恒的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. asp.net模态窗口返回值
  5. Java 三大特性之——继承
  6. 从1.5k到18k, 一个程序员的5年成长之路
  7. 酷柚易汛工资条代码全开源,方便二次开发
  8. R语言 聚类分析代码 系统聚类 K均值聚类 可视化
  9. 删除卸载企业微信后的残留文件
  10. 异步编程举例之闹钟程序
  11. 如何限制局域网计算机上网,怎么样禁止局域网用户修改电脑ip地址
  12. 瑞典皇家理工学院计算机科学世界排名,2017瑞典皇家理工学院世界排名
  13. module_param传递参数
  14. 应用程序 iis 中的服务器错误,unhandled-exception
  15. CSS-margin外边距
  16. 杰里混响调MIC增益和深度【篇】
  17. Android获取酷狗音乐歌曲详细信息
  18. js 正则验证三位小数
  19. mount samba file system
  20. LM小型可编程控制器软件(基于CoDeSys)笔记十三:网络资源汇总

热门文章

  1. 男人该知道的人生感悟(图)
  2. 代码之美——Doom3源代码赏析
  3. 微软:软件帝王的复兴之路
  4. Hibernate4 注解方法说明
  5. [cerc2012][Gym100624B]20181013
  6. 博客园中的源代码格式显示
  7. 2018.8.26 Spring自学如门
  8. [Objective-C]编程艺术 笔记整理
  9. C# 使用Conditional特性而不是#if条件编译
  10. [转]Android Studio系列教程六--Gradle多渠道打包