如何配置ngnix兼容PC与APP的分享功能?

一、目前我们的需求:

之前在老东家的时候,有这么一个需求,在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/;
    }
}

以上就是配置的一些信息,有兴趣的可以自己去研究一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,786评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 很多时候,你以为自己已经善用图表讲故事,其实只不过是出示资料而已!在资料工作的普及之下,任何人都能将输入资料Exc...
    公子义阅读 526评论 0 0
  • 我迷茫在这偌大的都市 高耸的大楼 繁华的街道 我已分不清东南西北 我徘徊在东门的十字路口 往左走了许久 又往右走了...
    胡小枫阅读 318评论 5 4
  • 永远不要使用超级用户或所有者帐号去连接数据库。要用权限被严格限制的帐号。 检查输入的数据是否具有所期望的数据格式。...
    zshanjun阅读 695评论 0 1