nginx 규칙: 자동 으로 등급 을 낮 추고 핸드폰 사용자 가 핸드폰 버 전과 PC 버 전 페이지 를 방문 합 니 다.
7492 단어 nginx
1. 백 엔 드 서버 에 이상 이 발생 하면 응답 코드 는 500 501 502 503 504 이 고 정적 인 강등 서버 로 전송 을 요청 하여 업무 가 완전히 접근 할 수 없 을 정도 로 탐색 형 이 고 실시 간 요구 가 높 지 않 은 사이트 에 매우 유용 합 니 다.
app_server: 응용 서버, 정상 서비스 페이지 제공
shopwebstatic: 정적 서버, 정시 에 기어 오 르 는 정적 페이지 제공
2. 재 시도 요청:
proxy_next_upstream http_500 http_502 http_504 error timeout invalid_header;
3. user 에이전트, cookie 특정 필드 에 따라 PC 버 전 사용자 의 요청 을 모 바 일 페이지 로 전송 하거나 PC 버 전 페이지 에 다시 방문 합 니 다.
기본 핸드폰 사용자 가 사이트 에 방문 하면 핸드폰 버 전 으로 이동 합 니 다. 이동 판단 근 거 는 user 에이전트 입 니 다. 사용자 가 컴퓨터 버 전 을 클릭 할 때 사용자 의 user 에이전트 를 판단 하 는 것 외 에 사용자 의 방문 모델 도 판단 해 야 합 니 다. 쿠키 의 특정 필드 의 값 을 통 해 사용자 의 방문 요청 이 핸드폰 버 전 으로 가 는 지 PC 버 전 으로 가 는 지 판단 해 야 합 니 다.
mode = pc, mode 는 사용자 의 방문 모드 를 PC 버 전 으로 표시 합 니 다. 이 쿠키 필드 를 통 해 user 에이전트 가 스마트 폰 필드 와 일치 하 는 사용자 의 요청 을 모 바 일 버 전 으로 전송 할 지 여 부 를 판단 할 수 있 습 니 다.
limit_conn_zone $server_name zone=limit:10m;
upstream app_servers {
server app_server01_ip:80 weight=1 max_fails=2;
server app_server01_ip:80 weight=1 max_fails=2 backup;
}
upstream shopwebstatic {
server shopwebstatic_server01_ip:80 weight=5;
server shopwebstatic_server02_ip:80 weight=5;
}
server {
listen 80;
server_name qunying.liu.dianping.com;
# config_apps_begin
root /data/webapps/shops-web/shared/webroot;
access_log logs/shops-web.access.log main;
error_log logs/shops-web.error.log notice;
# config_apps_end
limit_conn limit 280;
proxy_next_upstream http_500 http_502 http_504 error timeout invalid_header;
location / {
proxy_intercept_errors on;
location ~* ^/shop/(\d+)/menu{
set $mobile 0;
set $shopid $1;
set $hostid 0;
if ( $http_user_agent ~* "(Android|iPhone|Windows Phone)" ){
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_pass http://app_servers/shop/$shopid/mobilemenu;
break;
}
if ( $mobile = "011" ){
rewrite ^/(.*)$ http://mobile-servers/$1 redirect;
break;
}
proxy_pass http://app_servers;
break;
}
location ~* ^/shop/(\d+)/dish-(.*){
set $mobile 0;
set $shopid $1;
set $dishurl $2;
if ( $http_user_agent ~* "(Android|iPhone|Windows Phone)" ){
set $mobile "${mobile}1";
}
if ( $http_cookie !~* "mode=pc"){
set $mobile "${mobile}1";
}
if ( $mobile = "011" ){
rewrite ^/(.*)$ http://mobile-servers/shop/$shopid/product-$dishurl redirect;
break;
}
proxy_pass http://app_servers;
break;
}
location ~* ^/map/shop/(\d+)$ {
set $shopid $1;
rewrite ^/(.*)$ http://www.servers/shop/$shopid/map permanent;
proxy_set_header Host "www.servers";
break;
}
location ~* ^/shop/(\d+)(/map|/)?$ {
set $mobile 0;
if ( $http_user_agent ~* "(Android|iPhone|Windows Phone)" ){
set $mobile "${mobile}1";
}
if ( $http_cookie !~* "mode=pc"){
set $mobile "${mobile}1";
}
if ( $mobile = "011" ){
rewrite ^/(.*)$ http://mobile-servers/$1 redirect;
break;
}
proxy_pass http://app_servers;
break;
}
# appserverfavcion
location ~* ^.*/favicon.ico$ {
root /data/webapps;
expires 30d;
break;
}
if ( !-f $request_filename ) {
proxy_pass http://app_servers;
break;
}
}
error_page 500 501 502 503 504 @shopstatic;
location @shopstatic {
access_log logs/shops-static-web.access.log retry;
proxy_pass http://shopwebstatic;
}
2014.05.25 업데이트:
과거 설정 한 규칙 에서 접근 한 호스트 이름 이 판단 되 지 않 아 pc 와 모 바 일 도 메 인 이름 에 동시에 설정 되 었 을 때 pc 버 전 도 메 인 이름 이 모 바 일 버 전 으로 이동 할 때 ww (모 바 일 방문 시) - m 도 메 인 이름 - m 도 메 인 이름 으로 자동 으로 이동 하여 응용 프로그램 을 분석 하면 user 에이전트 와 쿠키 규칙 에 따라 m 도 메 인 이름 을 한 번 더 이동 합 니 다.그리고 순환 에 빠진다.
도 메 인 이름 전환 을 할 때 도 메 인 이름 을 판단 하 는 것 이 좋 습 니 다.
location ~* /mylist/{
set $mobile 0;
if ( $http_user_agent ~* "(Android|iPhone|Windows Phone|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/$1 last;
break;
}
proxy_pass http://jboss8080;
break;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.