烂泥:haproxy学习之手机规则匹配

烂泥:haproxy学习之手机规则匹配,第1张

烂泥:haproxy学习之手机规则匹配

本文由ilanniweb赞助,首次发表于MudWalktheWorld

今天我们就来介绍一下haproxy搭配手机的一些规则和配置。

一、业务需要

现在根据业务的实际需求,有以下不同的需求。如下所示:

1.1转发所有手机请求

所有通过手机访问http.ilanni.com域名的行为都会被转发到http://www.ilanni.com的地址,但PC不受此限制。

1.2根据url进行转发

如果手机请求的域名http.ilanni.com的url以关键字docs或manager开头,请求会被转发到后端服务器,但PC不受此限制。

也就是说,如果手机访问特定的url地址,是可以正常访问的。如果您直接访问http.ilanni.com的域名,请将请求直接转发到http://www.ilanni.com的地址。

二、haproxy配置

Haproxy根据不同的业务需求配置如下。

2.1转发所有手机请求配置

要将所有移动电话请求转移到www.ilanni.com的这个地址,我们需要首先匹配被访问的终端。haproxy可以通过hdr_sub(用户代理)参数匹配手机。

手机匹配后,我们可以定义相应的规则,将手机请求转发到www.ilanni.com的地址。

Haproxy的具体配置文件如下:

全球的

日志127.0.0.1本地0

日志127.0.0.1本地1通知

maxconn4096

uid188

gid188

守护进程

tune.ssl.default-dh-param2048

默认

日志全局

模式http

选项httplog

选项dontlognull

选项http-服务器-关闭

127.0.0.1除外的选项转发

选项重新调度

重试3次

选项重新调度

maxconn2000

http请求超时10秒

超时队列1m

连接超时10秒

客户端1m超时

服务器1m超时

超时http-保持活动状态10秒

超时检查10秒

maxconn3000

听管理_统计

绑定0.0.0.0:1080

模式http

选项httplog

maxconn10

统计刷新30秒

统计uri/统计

统计认证管理:管理

统计数据隐藏-版本

前端weblb

bind*:80

acl是_httphdr_beg(主机)http.ilanni.com

acluahdr_sub(用户代理)-iandroidiphone

如果是ua,重定向前缀http://www.ilanni.com

如果是_http,请使用_backendhttpserver

后端httpserver

平衡源

服务器web1127.0.0.1:8080maxconn1024重量3检查inter2000上升2下降3

在上面的配置文件中,有以下两行需要注意:

acluahdr_sub(用户代理)-iandroidiphone

如果是ua,重定向前缀http://www.ilanni.com

这两行,第一行是第一个ua规则,就是判断是不是手机。

注:在这个手机端,我们只匹配了安卓手机和iphone。

第二行是跳转规则。如果匹配是在手机端,那么直接跳转到http://www.ilanni.com的地址。

如果是PC端,默认会跳转到后端服务器组httpserver。

上面的配置是请求服务器只提供对一个域名的访问。如果有两个域名,则需要进行以下配置:

全球的

日志127.0.0.1本地0

日志127.0.0.1本地1通知

maxconn4096

uid188

gid188

守护进程

tune.ssl.default-dh-param2048

默认

日志全局

模式http

选项httplog

选项dontlognull

选项http-服务器-关闭

127.0.0.1除外的选项转发

选项重新调度

重试3次

选项重新调度

maxconn2000

http请求超时10秒

超时队列1m

连接超时10秒

客户端1m超时

服务器1m超时

超时http-保持活动状态10秒

超时检查10秒

maxconn3000

听管理_统计

绑定0.0.0.0:1080

模式http

选项httplog

maxconn10

统计刷新30秒

统计uri/统计

统计认证管理:管理

统计数据隐藏-版本

前端weblb

bind*:80

acl是_httphdr_beg(主机)http.ilanni.com

acl是_haproxyhdr_beg(主机)haproxy.ilanni.com

acluahdr_sub(用户代理)-iandroidiphone

重定向前缀http://www.ilanni.com如果ua!is_haproxy

如果ua是_haproxy,请使用_backendhaproxyserver

如果是_haproxy,请使用_backendhaproxyserver

如果是_http,请使用_backendhttpserver

后端httpserver

平衡源

服务器web1127.0.0.1:8080maxconn1024重量3检查inter2000上升2下降3

后端haproxyserver

平衡源

服务器web1127.0.0.1:7070maxconn1024重量3检查inter2000上升2下降3

2.2测试转发所有手机请求

现在让我们测试这个跳转函数,如下所示:

通过测试,你会发现在手机浏览器中输入http.ilanni.com,会自动跳转到http://www.ilanni.com的地址。

2.3根据url进行转发配置

如果按照手机请求的url转发,也需要先匹配手机,再定义url路径规则。最后结合手机和url路径规则进行跳转。

Haproxy特定配置文件,如下所示:

全球的

日志127.0.0.1本地0

日志127.0.0.1本地1通知

maxconn4096

uid188

gid188

守护进程

tune.ssl.default-dh-param2048

默认

日志全局

模式http

选项httplog

选项dontlognull

选项http-服务器-关闭

127.0.0.1除外的选项转发

选项重新调度

重试3次

选项重新调度

maxconn2000

http请求超时10秒

超时队列1m

连接超时10秒

客户端1m超时

服务器1m超时

超时http-保持活动状态10秒

超时检查10秒

maxconn3000

听管理_统计

绑定0.0.0.0:1080

模式http

选项httplog

maxconn10

统计刷新30秒

统计uri/统计

统计认证管理:管理

统计数据隐藏-版本

前端weblb

bind*:80

acl是_httphdr_beg(主机)http.ilanni.com

acl是_docsurl_beg/docs/manager

acluahdr_sub(用户代理)-iandroidiphone

重定向前缀http://www.ilanni.com如果ua!is_docs

如果ua是_docs,请使用_backendhttpserver

如果是_http,请使用_backendhttpserver

后端httpserver

平衡源

服务器web1127.0.0.1:8080maxconn1024重量3检查inter2000上升2下降3

在上面的配置文件中,需要解释下面几行。

acl是_docsurl_beg/docs/manager

定义一个is_docs规则。如果url以/docs或/manager开头,则全部属于此规则。

acluahdr_sub(用户代理)-iandroidiphone

重定向前缀http://www.ilanni.com如果ua!is_docs

这两行一开始匹配的是手机,然后如果是手机访问,不是is_docs规则,会直接跳转到http://www.ilanni.com的地址。

如果ua是_docs,请使用_backendhttpserver

这个命令是直接跳转到后端服务器组httpserver,如果是手机访问,访问的是is_docs规则。

如果是PC端,默认会跳转到后端服务器组httpserver。

2.4测试根据url进行转发

url转发配置完成后,现在我们来测试一下。如下所示:

从上图我们可以看到,如果手机接入http://http.ilanni.com/docs/,就可以直接接入。

三、其他haproxy配置

前面解释了手机的配置。在实际的生产环境中,有时我们会遇到一些奇怪的需求。

所有手机都要求访问http.ilanni.com,并转到指定页面。

haproxy的主要配置文件如下:

前端weblb

bind*:80

acl是_httphdr_beg(主机)http.ilanni.com

acluahdr_sub(用户代理)-iandroidiphone

如果ua,重定向前缀http://www.ilanni.com/?p=10624

如果是_http,请使用_backendhttpserver

后端httpserver

平衡源

服务器web1127.0.0.1:8080maxconn1024重量3检查inter2000上升2下降3

以上配置所有手机访问,都跳转到http://www.ilanni.com/?.P=10624这个页面。测试如下:

从上图可以看出,手机上的访问确实跳转到了我们指定的页面。

这样的要求通常是在公司相关业务升级时提出的。公司公网的IP可以正常,但是对于外部访问,跳转到指定维护页面。

这个我们可以根据源IP地址来匹配,这里就不详细解释了。

从上图我们可以看到,如果手机接入http://http.ilanni.com/manager/status,就可以直接接入。

从上图中我们可以看到,如果手机访问的url不是规则is_docs中定义的URL,它将全部跳转到http://www.ilanni.com的这个地址。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/779744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存