一、目前我们的需求:
之前在老东家的时候,有这么一个需求,在APP端对课程进行分享(分享到QQ、微信、朋友圈、微博、QQ空间),如果当前是在手机端进入QQ空间,点击该分享链接跳转的是手机端APP课程详情界面(已登录的情况,未登录则跳转到等界面);如果当前是在PC端进入的QQ空间,点击该链接跳转的则是PC端课程详情界面(已登录的情况,未登录则跳转到登录界面)在PC端对课程进行分享(分享到微博、QQ空间),与上反之。
二、解决方案:
原先商讨是将PC端的分享链接地址与APP端的分享链接地址统一,再由Nginx去判断客户端类型,进行不同的服务分发,之前商讨的是分享链接地址前缀统一成学员前端web,这样的话安卓和IOS两边都需要改,而且还需要在前端写死,感觉这样的话不是很灵活,因为我们APP这边还需要走适配器,也会有不同的环境,每个环境对应的地址不一样,每次都改的话对前端来说效率不是很高,所以决定前端暂时不动,仍旧是请求接口地址,分发操作还是交由Nginx来统一处理。这样的话,每次发版新环境的时候,nginx里面就需要注意一下了,我们需要在nginx.conf配置文件中的server下面配置两个location:
三、最终实现:
这里暂时以老东家预发布环境为例:
- 1、解析pc端分享链接地址
location /web/share {
alias /app/content/http/data/web/;
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.)|(java.)|(Opera.))$” ){
rewrite ^ http://xxxx.com/mobile/share/index.html;
}
}
- 2、解析app端分享链接
location /mobile/share {
alias /app/mobile-tomcat/webapps/mobile/share;
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.)|(java.)|(Opera.))$” ){
rewrite ^ http://xxxx.com/web/share/;
}
}
以上就是配置的一些信息,有兴趣的可以自己去研究一下。