应用交付脚本工具在HTTP服务中的应用

简介:

可编写脚本在应用交付(负载均衡)中是个相当关键的功能,它是负载均衡策略灵活性的最佳体现。虽然对于没有软件开发基础的技术同仁来说,脚本编写可能是一个“噩梦”,面对着那“神奇”的字符串,敝人也感同身受。为此,我搜集了一些脚本范例,特别是针对常用的HTTP流量的优化,为大家做个借鉴。

范例一:将HTTP的请求自动转换为HTTPS。这个脚本比较简单,但在很多电商网站或基于HTTPS访问的客户会用得比较多。

when HTTP_REQUEST {

HTTP::redirecthttps://[HTTP::host][HTTP::uri]

}

脚本说明:只要负载均衡收到HTTP的请求包,就以HTTP重定向的方式转换为HTTPS://加上域名和路径。


范例二:根据客户端请求的URI路径不同,分发至指定的服务器组(pool)。在一些客户的业务设计中,后台只有一台物理服务器(同一个IP地址同一个服务端口),但可根据路径的不同发布不同的业务,这时候就需要根据路径的关键字来区分业务。

when HTTP_REQUEST {

if {[HTTP::uri] starts_with"/test1" } {

pool pool_server1

} elseif {[HTTP::uri] starts_with"/test2" } {

pool pool_server2

} else } {

pool pool_server

}

}

脚本说明:当客户端请求的路径为“/test1”则分配给server1,当客户端请求的路径为“/test2”则分配给server2,其它请求都转发至默认的服务器组。


范例三:根据客户端浏览器默认语言设定自动选取对应国家语言的服务器群集。

when HTTP_REQUEST {

if { [HTTP::headeraccept-language] contains “es” } {

poolSpanish

} elseif { [HTTP::headeraccept-language] contains “ja” } {

poolJapanese

} elseif { [HTTP::headeraccept-language] contains “zh” } {

pool Chinese

} else {

poolEnglish

}

}

215635627.jpg

范例四:判断某虚拟服务器某端口业务(vport)的当前链接数,超过阀值后重定向到指定页面!~既能保护后台服务器,也能在接收到异常的大并发连接时提供友好的备份服务。

when HTTP_REQUEST {

set total1 [STATS::get virtual-servervs_192.168.111.45 8080 http current-connection]

if { $total1 > 100 } {

HTTP::redirect"http://www.163.com/"

}

}

脚本说明:当访问虚拟服务器192.168.111.45的8080端口的并发连接数大于100,后续请求都重定向至其他可访问的站点,如www.163.com


范例五:根据HTTP报文头的sessionID来做会话保持。某些网站是不能简单的采用源IP会话保持的策略,在开发时采用sessionID来标示会话信息。通过HTTPwatch工具,查看到客户的sessionID 是藏于cookies中:

Cookie内容:

ASP.NET_SessionId=rrwjbhbv1w4qgm553usoqqq3;MyCook=visitCount=1

使用以下脚本,在URI中查找“ASP.NET_SessionId”字段,就可以获取到sessionID,并进行会话保持。

when HTTP_REQUEST {

set session_id [findstr[HTTP::uri] "ASP.NET_SessionId=" 18 ";"]

if { ( $session_id eq"" ) and ( [HTTP::cookie exists ASP.NET_SessionId] ) } {

set session_id[HTTP::cookie ASP.NET_SessionId]

}

if { $session_id ne"" } {

persist uie $session_id

}

}

215658948.jpg

以上只是在HTTP环境中会经常遇到的脚本应用,脚本工具的强大远不止于此,藉此也希望更多的技术同仁能领略脚本工具的魅力所在,编写出更具Power的脚本范例,大家共同进步。


(ZJM)


本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/1297238




相关文章
|
1月前
|
网络协议 Linux 网络安全
curl(http命令行工具):Linux下最强大的网络数据传输工具
curl(http命令行工具):Linux下最强大的网络数据传输工具
43 0
|
1月前
|
编解码 测试技术 索引
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
在我们简要介绍了 HLS 协议的基础知识,接下来我们详细介绍一种使用 Jmeter 编写压测 HLS 协议脚本的方法。
70 1
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
|
1月前
|
JSON 数据格式
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
26 0
|
1月前
|
Web App开发 监控 Java
|
7天前
|
域名解析 网络协议 应用服务中间件
阿里云服务器配置免费https服务
阿里云服务器配置免费https服务
|
23天前
|
网络协议 应用服务中间件 网络安全
一个脚本把系统升级到https
一个脚本把系统升级到https
22 0
|
28天前
|
程序员
深入理解HTTP协议本质与应用
HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。简单来说,如果你不懂HTTP协议,那就相当于是个只有“半桶水”的程序员。在这个课程中,带你一起花最少的时间,用最少的精力,掌握最多、最全面、最系统的HTTP相关知识
14 3
深入理解HTTP协议本质与应用
|
1月前
|
JSON JavaScript 网络安全
新款HTTP代理工具Proxyman(界面美观、功能强大)
新款HTTP代理工具Proxyman(界面美观、功能强大)
|
1月前
|
存储 数据采集 负载均衡
建立HTTP代理IP池的技术和工具支持
建立HTTP代理IP池的技术和工具支持
44 0