朋友講,nginx比Apache居有靈活的user-agent控制,特找來記錄,確實如此。
一般通過User-Agent來判斷,從網上抄一抄,那些列出的都不錯,我的配置里加上了Java、curl和Wget,方便調試和其它內部項目的抓取。
因為現在很多手機網關沒有發送User-Agent,所以大部分手機發送的User-Agent到了網關就被過濾掉了,相當于是空值。經過抽樣調查,User-Agent為空且為手機用戶比例比較大。有部分User-Agent為空的是一些蜘蛛或垃圾程序的造訪,這些垃圾流量并不那么重要。希望手機網關將來有相應的標準,不要發送空的User-Agent,就是發送一個字母也好啊。
如果應用有一個獨立域名,也未必要做手機判斷。譬如新浪有獨立域名且深入人心,那它做不做跳轉無關緊要。
nginx配置用窮舉方式羅列各類手機User-Agent并把空User-Agent也轉到手機應用里,非這些情況,則跳到幫助頁面。
set $ismob 0;
if ( $http_user_agent ~ “^((.*MIDP.*)|(.*WAP.*)|(.*UP.Browser.*)|(.*Smartphone.*)|(.*Obigo.*)|(.*Mobile.*)|(.*AU.Browser.*)|(.*wxd.Mms.*)|(.*WxdB.Browser.*)|(.*CLDC.*)|(.*UP.Link.*)|(.*KM.Browser.*)|(.*UCWEB.*)|(.*SEMC\-Browser.*)|(.*Mini.*)|(.*Symbian.*)|(.*Palm.*)|(.*Nokia.*)|(.*Panasonic.*)|(.*MOT\-.*)|(.*SonyEricsson.*)|(.*NEC\-.*)|(.*Alcatel.*)|(.*Ericsson.*)|(.*BENQ.*)|(.*BenQ.*)|(.*Amoisonic.*)|(.*Amoi\-.*)|(.*Capitel.*)|(.*PHILIPS.*)|(.*SAMSUNG.*)|(.*Lenovo.*)|(.*Mitsu.*)|(.*Motorola.*)|(.*SHARP.*)|(.*WAPPER.*)|(.*LG\-.*)|(.*LG/.*)|(.*EG900.*)|(.*CECT.*)|(.*Compal.*)|(.*kejian.*)|(.*Bird.*)|(.*BIRD.*)|(.*G900/V1.0.*)|(.*Arima.*)|(.*CTL.*)|(.*TDG.*)|(.*Daxian.*)|(.*DAXIAN.*)|(.*DBTEL.*)|(.*Eastcom.*)|(.*EASTCOM.*)|(.*PANTECH.*)|(.*Dopod.*)|(.*Haier.*)|(.*HAIER.*)|(.*KONKA.*)|(.*KEJIAN.*)|(.*LENOVO.*)|(.*Soutec.*)|(.*SOUTEC.*)|(.*SAGEM.*)|(.*SEC\-.*)|(.*SED\-.*)|(.*EMOL\-.*)|(.*INNO55.*)|(.*ZTE.*)|(.*iPhone.*)|(.*Android.*)|(.*Windows CE.*)|(Wget.*)|(Java.*)|(curl.*)|(Opera.*))$” )
{
set $ismob 1;
proxy_pass http://m.sudone.com;
}
if ( $http_user_agent ~ ^$ )
{
set $ismob 1;
proxy_pass http://m.sudone.com;
}
if ( $ismob = 0 )
{
<a href=”/tag/rewrite/” onclick=”tagshow(‘rewrite’);return false;”>rewrite</a> “^.*$” http://help.m.sudone.com/ permanent;
}