Apache Traffic Server(ATS) 根据User Agent实现302重定向

盖和洽
2023-12-01

需求:通过User Agent判断手机用户,重定向到手机页面。

首先看github上面的例子,或者直接看官网
其实很简单,直接来吧

#判断是否有手机ua关键字的,举了些例子。
function isMobile(userAgent)
        ua_array = {'android','iphone','ipad','mqqbrowser','windows phone','huawei','htc','meizu','oppo','vivo','xiaomi'}
        n = table.getn(ua_array)
        for i= 1, n do
                if(string.match(userAgent,ua_array[i])) then
                        return true
                end
        end
        return false
end

#在返回的header里面加入Location,即302之后的地址。
function send_response()
    if(remap_url) then
         ts.client_response.header['Location'] = remap_url
    end
    return 0
end

#判断访问来自手机后返回302
function do_remap()
    local ua = ts.client_request.header['User-Agent']
    if(isMobile(string.lower(ua))) then
        local uri = ts.client_request.get_uri()
        if(string.match(uri,'^/$')) then
            ts.http.set_resp(302)
            remap_url = "http://wap.test.com/"
        end
    end
    ts.hook(TS_LUA_HOOK_SEND_RESPONSE_HDR, send_response)
end

修改remap.conf配置文件,加一行配置:

map http://www.test.com/ http://www.test.com/ @plugin=/opt/ts/libexec/trafficserver/tslua.so @pparam=/opt/ts/lib/test.lua

重新加载配置文件:

/opt/ts/bin/traffic_ctl config reload

测试:

root@zhi:~# curl -v -H "User-Agent:iphone" http://www.test.com/ >/dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 192.168.1.6...
* Connected to www.gameabc.com (192.168.1.6) port 80 (#0)
> GET / HTTP/1.1
> Host: www.gameabc.com
> Accept: */*
> User-Agent:iphone
> 
< HTTP/1.1 302 Found
< Date: Fri, 10 Mar 2017 08:54:15 GMT
< Connection: keep-alive
< Server: CUWEBCACHE/2.3.4
< Cache-Control: no-store
< Content-Type: text/html
< Content-Language: en
< NODE: HIT
< Location: http://wap.test.com/
< Content-Length: 207
< 
{ [207 bytes data]
100   207  100   207    0     0  15572      0 --:--:-- --:--:-- --:--:-- 15923
* Connection #0 to host www.gameabc.com left intact

完美收工。

 类似资料: