本文使用 http proxy 方式 实现 apache 支持  WebSocket 请求(JK 使用的 ajp 协议不能支持websocket)

通过 apache 访问 后端 tomcat上的 websocket 服务,需要使用 mod_proxy.so 和 mod_proxy_wstunnel.so两个库文件(在apache2.4 安装目录下已存在,放开httpd.conf文件中的注释即可使用),如果应用中需要通过http协议访问某些页面(如index页面)则需要添加使用 mod_proxy_http.so,如下:

    LoadModule proxy_module modules/mod_proxy.so  

    LoadModule proxy_http_module modules/mod_proxy_http.so  (可选)

    LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
最后面添加:
ProxyPass /web/websocket/ ws://tommcatIP:8080/web/websocket/
ProxyPass / http://127.0.0.1:8080/ (可选)

我的apache端口使用的是 80,所以访问 http://127.0.0.1:80/web/ 就出现了 index.html首页(此次访问不是websocket,所以需要开启mod_proxy_http.so,如果不需要可以关闭加载mod_proxy_http.so) (可选)

我的应用中配置的 websocket服务都在  web/websocket/ 下面,所以配置了映射,对于其它所有映射如 “/” 需要配置到 web/websocket/ 映射的后面,否则 web/websocket/ 的映射会被当做http协议处理。

注意: WebSocket 负载均衡
没有 亲和/非亲和 概念!!!

另外一种实现方式:

前写的即时通信部分上传到服务器上之后,发现 WebSocket 连接不上了。

妈蛋。

于是百度了半天,看到一个方法是配置 Apache,增加 mod_python、mod_pywebsocket 扩展巴拉巴拉。

mod_python 在我最开始配置 Apache 支持 PHP 和 Pyhton 的时候就发现好像不太好用,所以就没有用。

这次简单地尝试了一下还是有问题,所以就算了。

可能因为我是通过 apache 代理,将域名解析到指定端口来实现 tornado 应用的上线,而 WebSocket 在握手的时候请求直接发送到 apache。apache 代理的时候没法将 WebSocket 握手请求传递给 tornado 应用,结果就是握手失败

解决方案:

将 html 文件里的 ws 服务器地址修改为服务器 IP 地址,越过 apache 代理的部分,直接跟 tornado 应用握手。

就是这样:

《xxx.html》
ws = new WebSocket("ws://xxx.xxx.xx.xxx:8008/soc")

ws = new WebSocket("ws://www.mysite.com/soc")

以上。

Apache 配置 WebSocket 协议的更多相关文章

  1. 在linux下的apache配置https协议,开启ssl连接

    环境:linux 配置https协议,需要2大步骤: 一.生成服务器证书 1.安装openssl软件 yum install -y openssl mod_ssl 2.生成服务器私匙,生成server ...

  2. apache配置https协议

    安装openssl有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.下面对两种方式均进行详细描述. 一.下载和安装openss 方法一:直接使用openssl安装包 W ...

  3. Apache 配置HTTPS协议搭载SSL配置

    在设置Apache + SSL之前, 需要做:     安装Apache, 请参见: Windows环境下Apache的安装与虚拟目录的配置, 下载安装Apache时请下载带有ssl版本的Apache ...

  4. Apache配置HTTPS协议搭载SSl配置全过程

    1.首先要开启相应的扩展和辅助的dll(ssleay32.dll,libeay32.dll)到system32下 2.生成服务器证书 安装好在bin目录下有一个openssl.exe文件,用来生成证书 ...

  5. Apache配置WebSocket代理

    引入mod_proxy_wstunnel.so模块,使其可以解析ws.wss协议 LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel ...

  6. WebSocket 协议

    1.1 背景知识 由于历史原因,在创建一个具有双向通信机制的 web 应用程序时,需要利用到 HTTP 轮询的方式.围绕轮询产生了 “短轮询” 和 “长轮询”. 短轮询 浏览器赋予了脚本网络通信的编程 ...

  7. websocket + TP5.1 + apache 配置步骤

    websocket + TP5.1 + apache 配置步骤 1. https ssl配置好 2. 检查php环境是否满足Workerman要求 curl -Ss http://www.worker ...

  8. apache+djnago+websocket 部署配置

    部署Apache服务器 1.apache服务的安装这里不做赘述,因为网上一大堆. 链接:https://blog.csdn.net/qq_24394093/article/details/905501 ...

  9. WebSocket协议

    websocket 简介 (2013-04-09 15:39:28) 转载▼   分类: websocket 一 WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例 ...

随机推荐

  1. 在Angular1.X中使用CSS Modules

    在Angular1.5中,增加了一个Component方法,并且定义了组件的若干生命周期hook,在代码规范中也是推崇组件化开发,但是很遗憾的是,CSS模块化组件化的问题并没有得到解决,大部分项目的打 ...

  2. CenOS 7 安装wordpress

    1:Centos安装 php和html yum install httpd -y yum install php -y 2:将 wordpress 拖到目录  /var/www/html 3:浏览器访 ...

  3. 读取DBF文件数据

    #region 返回DBF表 public static System.Data.DataTable getDTFromDBF(string fullPath) { string pDir = Sys ...

  4. HoloLens外包团队:HoloLens有一个严重缺陷,但微软并不想改

    微软的HoloLens自公布以来,几乎获得了一边倒的赞美声.它使用了增强现实(AR)技术,在现实世界中叠加一层虚拟影像,能让人仿佛置身魔法世界.但从最新的Hololens硬件体验上看,它可能有一个致使 ...

  5. vi 颜色配置

    一.vi 默认黑色背景上,蓝色注释很难看不清,必须重新设置. (1)查看vi支持的配色方案: $ ls /usr/share/vim/vim72/colors (2)支持如下方案: blue.vim ...

  6. 【java】之3种方式实现Object和Map之间的转换

    利用commons.BeanUtils实现Obj和Map之间转换,这种是最简单,也是最经常用的 public static Object mapToObject(Map<String, Obje ...

  7. Mysql 客户端查询结果如何保存到本地而不是服务端?

    应用场景:知道某台DB服务器的IP和账户,登录上去查询了10W条记录,需要把这些记录拉到本地做分析 方法1,远程连接到DB服务器执行OUTFILE命令,文件存储在DB机器上,只有mysql账户的情况下 ...

  8. PowerProfile.java与power_profile.xml

    转载自http://blog.csdn.net/green1900/article/details/42427871 现在诸多关于电池管理的应用做的极其绚烂,可实现如耗电应用排行.剩余时间计算.关闭耗 ...

  9. 初版storm项目全流程自动化测试代码实现

    由于项目需要,写了版针对业务的自动化测试代码,主要应用场景在于由于业务日趋复杂,一些公共代码的改动,担心会影响已有业务.还没进行重写,但知识点还是不少的与大家分享实践下.首先,介绍下整个流处理的业务流 ...

  10. 创建javascript对象的几种方式

    ECMAScript提供的对象有:String.Date.Array.Boolean.Math.Number.RegExp.Global 程序中需要用到很多自定义的js对象 1.直接创建 var ob ...