本文由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的这个地址。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)