|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:CentOS并不包含封闭源代码软件。
1、断定手机用户
普通经由过程User-Agent来断定,从网上抄一抄,那些列出的都不错,我的设置装备摆设里加上了Java、curl和Wget,便利调试和其它外部项目标抓取。
由于如今许多手机网关没有发送User-Agent,所以年夜部门手机发送的User-Agent到了网关就被过滤失落了,相当因而空值。经由抽样查询拜访,User-Agent为空且为手机用户比例比拟年夜。有部门User-Agent为空的是一些蜘蛛或渣滓法式的访问,这些渣滓流量其实不那末主要。愿望手机网关未来有响应的尺度,不要发送空的User-Agent,就是发送一个字母也好啊。
假如运用有一个自力域名,也未需要做手机断定。比方新浪有自力域名且不得人心,那它做不做跳转可有可无。
nginx设置装备摆设用穷举方法枚举各类手机User-Agent并把空User-Agent也转得手机运用里,非这些情形,则跳到赞助页面。
- set$ismob0;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.*)|(.*WindowsCE.*)|(Wget.*)|(Java.*)|(curl.*)|(Opera.*))$"){set$ismob1;proxy_passhttp://www.92csz.com;}if($http_user_agent~^$){set$ismob1;proxy_passhttp://www.92csz.com;}if($ismob=0){rewrite"^.*$"http://help.www.92csz.com/permanent;}
复制代码
2、Content-Type
手机阅读器和通俗电脑拜访页面有所分歧,绝年夜多半手机不支撑text/html这类Content-Type格局。在web办事方面,除要做出适合手机阅读的页面,别的一个主要的工作就是要把Content-Type弄对了。普通手机应用的是text/vnd.wap.wml和application/xhtml+xml,据说text/vnd.wap.wml是老式手机公用,application/xhtml+xml是3g尺度指定的Content-Type,别的charset须要指明为UTF-8。
所以Content-Type就应像以下:
- Content-Type:application/xhtml+xml;charset=UTF-8
复制代码
如许就对了。
关于静态页面,Content-Type可以在法式里设定。
比方php
- header("Content-Type:application/xhtml+xml;charset=UTF-8")
复制代码
jsp的话,把顶头的page改了就好
静态法式里的设定,到了nginx上默许会继续,所以不消太多斟酌。nginx要做的一个是静态页面,另外一个是302跳转。
静态页面的Content-Type改起来不费事,修正mime.types:
- application/xhtml+xmlhtmlhtmshtml;application/xhtml+xmlxml;
复制代码
把须要的扩大名对应的类型改一改就行了。然后在nginx.conf里指定charsetUTF-8。
费事的是301和302跳转,nginx中应用rewrite的redirect和permanent跳转的时刻,Content-Type怎样改都邑是text/html,应用add_header,Content-Type酿成了两行,没能杀青目标。用署理到静态法式虽然行,但机能和稳固性又成了成绩。最初查阅了nginx源码,发明这个text/html是写逝世的……
唉,第一次修正c代码:
我调试的这个nginx是0.7.30版的,文件:
- vi./src/http/ngx_http_special_response.c568//r->headers_out.content_type_len=sizeof("text/html")-1;569//r->headers_out.content_type.len=sizeof("text/html")-1;570//r->headers_out.content_type.data=(u_char*)"text/html";
复制代码
把568569570这三行代码正文失落,就能够让nginx跳转时不发送Content-Type,我发明在电脑的IE/FF阅读器上没有Content-Type也能正常跳转。
固然,为了严谨一些,写上Content-Type吧,如今可以用add_header界说:
- add_headerContent-Type"text/html";
复制代码
手机的就是:
- add_headerContent-Type"application/xhtml+xml";
复制代码
小知识:RHEL是很多大型企业采用的操作系统,但需要向RedHat购买使用权,有偿享受技术支持、版本升级等,所以推荐大家使用CentOS。 |
|