|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们! |
|