仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 384|回复: 8
打印 上一主题 下一主题

[CentOS(社区)] 给大家带来nginx手机用户会见跳转手机版与PC版页面

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:25:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!事情中为满意营业必要和包管办事的可用性,设置的一些nginx跳转划定规矩,与公司营业相干信息已抹往,供应出来但愿对人人有匡助。

1.当后端办事器呈现非常,呼应码为500501502503504,哀求转发到静态升级办事器,从而包管营业不至于完整没法会见,关于扫瞄型且及时性请求不高的站点十分有效。
app_servers:使用办事器,供应一般办事页面
shopwebstatic:静态办事器,供应准时爬取的静态页面

2.哀求重试:
proxy_next_upstreamhttp_500http_502http_504errortimeoutinvalid_header;

3.依据useragent,cookie特定字段,未来源为PC版用户的哀求转发得手机版页面大概规复会见PC版本页面。
默许手机用户会见站点会跳转得手机版本,跳转判别根据是useragent,当用户点击会见电脑版本的时分,除要判别用户的useragent外还必要判别用户的会见形式,经由过程cookie中特定字段的值来判别用户会见哀求是得手机版本仍是到PC版本。

mode=pc,mode标志用户的会见形式是PC版本,经由过程此cookie字段,可判别是不是将useragent婚配智妙手机字段的用户的哀求转发得手机版本。



limit_conn_zone$server_namezone=limit:10m;
upstreamapp_servers{
serverapp_server01_ip:80weight=1max_fails=2;
serverapp_server01_ip:80weight=1max_fails=2backup;
}
upstreamshopwebstatic{
servershopwebstatic_server01_ip:80weight=5;
servershopwebstatic_server02_ip:80weight=5;
}

server{
listen80;
server_namequnying.liu.dianping.com;
#config_apps_begin
root/data/webapps/shops-web/shared/webroot;
access_loglogs/shops-web.access.logmain;
error_loglogs/shops-web.error.lognotice;
#config_apps_end
limit_connlimit280;
proxy_next_upstreamhttp_500http_502http_504errortimeoutinvalid_header;

location/{

proxy_intercept_errorson;
location~*^/shop/(d+)/menu{
set$mobile0;
set$shopid$1;
set$hostid0;
if($http_user_agent~*"(Android|iPhone|WindowsPhone)"){
set$mobile"${mobile}1";
}
if($host~*"m.dianping.com"){
set$hostid"${hostid}1";
}

if($http_cookie!~*"mode=pc"){
set$mobile"${mobile}1";
}

if($hostid="01"){
proxy_passhttp://app_servers/shop/$shopid/mobilemenu;
break;
}
if($mobile="011"){
rewrite^/(.*)$http://mobile-servers/$1redirect;
break;
}
proxy_passhttp://app_servers;
break;
}
location~*^/shop/(d+)/dish-(.*){
set$mobile0;
set$shopid$1;
set$dishurl$2;
if($http_user_agent~*"(Android|iPhone|WindowsPhone)"){
set$mobile"${mobile}1";
}
if($http_cookie!~*"mode=pc"){
set$mobile"${mobile}1";
}

if($mobile="011"){
rewrite^/(.*)$http://mobile-servers/shop/$shopid/product-$dishurlredirect;
break;
}
proxy_passhttp://app_servers;
break;
}
location~*^/map/shop/(d+)${
set$shopid$1;
rewrite^/(.*)$http://www.servers/shop/$shopid/mappermanent;
proxy_set_headerHost"www.servers";
break;
}
location~*^/shop/(d+)(/map|/)?${
set$mobile0;
if($http_user_agent~*"(Android|iPhone|WindowsPhone)"){
set$mobile"${mobile}1";
}
if($http_cookie!~*"mode=pc"){
set$mobile"${mobile}1";
}

if($mobile="011"){
rewrite^/(.*)$http://mobile-servers/$1redirect;
break;
}
proxy_passhttp://app_servers;
break;
}
#appserve***vcion
location~*^.*/favicon.ico${
root/data/webapps;
expires30d;
break;
}
if(!-f$request_filename){
proxy_passhttp://app_servers;
break;
}
}
error_page500501502503504@shopstatic;
location@shopstatic{
access_loglogs/shops-static-web.access.logretry;
proxy_passhttp://shopwebstatic;
}




2014.05.25更新:
发明已往设置的划定规矩中,因为未判别会见的主机名招致当一个使用同时被设置在pc和手机域名下,当会见pc版本域名跳转手机版本时会发生逝世轮回重定向,如www(手机会见时)----主动跳转到m域名---m域名剖析到使用会再依据useragent和cookie划定规矩跳转一次m域名,然后堕入逝世轮回。

在做域名跳转的时分,最好对域名做一个判别。
location~*/mylist/{
set$mobile0;
if($http_user_agent~*"(Android|iPhone|WindowsPhone|UC|Kindle)"){
set$mobile"${mobile}1";
}
if($http_host!~"m.dianping.com"){
set$mobile"${mobile}2";
}
if($cookie_vmod!~"pc"){
set$mobile"${mobile}3";
}
if($mobile="0123"){
rewrite^/(.*)$http://m.dianping.com/$1last;
break;
}
proxy_passhttp://jboss8080;
break;
}




本文出自“从菜鸟到老鸟”博客,请务必保存此出处http://liuqunying.blog.51cto.com/3984207/1406952
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-16 17:57:40 | 只看该作者

给大家带来nginx手机用户会见跳转手机版与PC版页面

然我们对Linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。
透明 该用户已被删除
板凳
发表于 2015-1-21 15:15:41 | 只看该作者
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
再现理想 该用户已被删除
地板
发表于 2015-1-30 20:24:43 | 只看该作者
主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。
谁可相欹 该用户已被删除
5#
发表于 2015-2-6 15:55:44 | 只看该作者
安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
6#
发表于 2015-2-17 03:50:07 | 只看该作者
清楚了解网络的基础知识,特别是在Linux下应用知识,如接入internet等等。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-5 15:44:56 | 只看该作者
我想即使Linux高手也很难快速准确精练的回答你。
柔情似水 该用户已被删除
8#
发表于 2015-3-12 10:51:36 | 只看该作者
熟读写基础知识,学得会不如学得牢。
活着的死人 该用户已被删除
9#
发表于 2015-3-19 22:39:46 | 只看该作者
以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 09:58

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表