F5 关于websocket

摘要:
如果需要ssl协议,请配置vs ws。

版本问题:

 https://support.f5.com/csp/article/K14754

 12.1.0 以后能够处理 websocket 协议,之前的版本可以使用两个vs 来区分, http 协议一个  ws 协议 一个  .。如果需要  ssl 协议 那么就配置一个 wss 的vs 。

  11.4.0   版本到 12.1.0 版本可以 配置一个 fasthttp profile  来放行  websocket  协议。但是失去了 xff ,插入 cookie  之类的操作, 因此12.1.0 版本解决 或者两个vs 解决.

 websocket 说明和 14 版本问题:

https://devcentral.f5.com/s/articles/load-balancing-websockets

如果上面两种方法都不行  ,或者使用下面 irules :

 https://devcentral.f5.com/s/feed/0D51T00006i7XG0SAM

测试可以用 ,原则就是 只影响  websocket  传输的数据流 ,最小化原则

when HTTP_REQUEST {   
   if client request contains a HTTP header "Upgrade: WebSocket", it indicate
   the client intended to switch to WebSocket, we shall disable HTTP filter here
 
   it is not very secure as we shall wait for response from server to confirm with
   status code 101 (Switching Protocols) with HTTP header "Upgrade: WebSocket"
   but it seems that LTM 10.2.4 HF7 have problem on that status code,
   so we have to workaround it.
 
   use case insensitive matching
  if { "websocket" eq [string tolower [HTTP::header value "Upgrade"]] } {
    HTTP::disable
#在检查配置的数据流禁用 HTTP 数据过滤 ,放行后续 ws 协议交互的数据(tcp 协议)
} }

  

 下面这个其实也有道理  ,在 服务器返回 101 状态吗和 upgrade 字段时关闭 http 但是作者说有问题 ,没测试过

when HTTP_RESPONSE {
   if status code is 101 (Switching Protocols) and there exists HTTP header "Upgrade: WebSocket",
   that means we are switching to WebSocket and thus HTTP filter shall be disabled
   use case insensitive matching
  if { [HTTP::status] == 101 && "websocket" eq [string tolower [HTTP::header value "Upgrade"]] } {
    HTTP::disable
  }
}

免责声明:文章转载自《F5 关于websocket》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇opencv使用AWS S3 JAVASCRIPT SDK 上传下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Socket通讯-C#客户端与Java服务端通讯(发送消息和文件)

设计思路 使用websocket通信,客户端采用C#开发界面,服务端使用Java开发,最终实现Java服务端向C#客户端发送消息和文件,C#客户端实现语音广播的功能。 Java服务端设计 package servlet.websocket; import java.io.IOException; import java.util.Map; imp...

spring Websocket 报 No suitab le default RequestUpgradeStrategy found

开始使用Tomcat8开发一切挺好的,但是公司的Paas平台上的服务器是Resin4.0.44,启动时包如下错误 WARN o.s.web.context.support.XmlWebApplicationContext - Exception e ncountered during context initialization - cancelling...

WebSocket实时消息推送

最近在项目中,使用到了WebSocket来实时推送服务器的数据到客户端,今天来记录总结一下。 想要使用WebSocket来实时推送数据,首先需要服务器与客户端直接建立连接,也就是握手(HTTP协议) 每5秒钟发生一个心跳@Scheduled(cron = "0/5 * * * * ? ") public void sendHeart() {...

openresty使用笔记(一)

背景介绍 游戏经过一段时间的运营,发现了原来的设计缺陷太多,所以决定重新设计架构。使用到nginx作为核心并通过lua+redis设计实现自己的负载分配方案。先看看下面这张简单的架构图吧~ 从图上看,结构是非常简单的。主要通过编写lua分配策略使游戏房间内的人数尽量坐满。 技术实现思路 要编写lua插件通常需求编译nginx使其支持,如果嫌麻烦可以直接上...

springBoot环境下创建webSocket服务端和客户端

1.pom文件导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> <version>2.0.4.RELE...

springboot 整合websocket实现消息推送(nginx、vue)

最近需要一个动态图表的功能,如下图。 这种实现需要实时推送数据上来,那一般有两种方法 方法一:前端写个定时器,不断轮询后台即可。这当然是很low的,请求太多很不友好,果断抛弃 方法二:使用websocket,废话不多说直接上代码 springboot 整合websocket有两种方法,这里先记录原始方法: 添加webSocket插件      <!...