Nginx 리 트 윗 요청 설정 - 작업 기록

26814 단어 Nginx
Nginx 리 트 윗 요청 설정 - 작업 기록
  • 서문
  • 현재 Nginx 작업 현황 과 새로운 수요
  • 현재 Nginx 설정
  • 새로운 수 요 를 만족 시 키 는 설정
  • 관건 적 인 설정 내용 분석
  • 주의사항
  • 머리말
  • 작업 중의 Nginx 설정 기록
  • 현재 Nginx 작업 상황 및 새로운 요구 사항
  • 현재 Nginx 작업 상황:
  • 모든 요청 은 일정한 규칙 에 따라 재 작성 하고 서버 A 를 리 트 윗 합 니 다.

  • 새로운 수요:
  • 요청 을 필터 링 하여 특정 형식 에 맞 는 요청 을 서버 B
  • 로 직접 전송 합 니 다.
  • 다른 요청 은 원래 의 규칙 에 따라 다시 쓰 고 서버 A 로 전송 합 니 다.


  • 현재 Nginx 설정
    server {
        listen       80;
        server_name  *.test.com;
        
        set $city "";
        if ( $host ~* "^(\w+)\.test\.com$") {
            set $city $1;
        }
    
        rewrite ^/web/ $uri last;
        rewrite ^/www/ $uri last;
        rewrite ^/css/ $uri last;
        rewrite ^/images/ $uri last;
        rewrite ^/js/ $uri last;
        
        rewrite ~*\.(css)$ www.test.com/$1 last;
        rewrite ^/ajax/(\w+)/(\w+)$  /$1/$2 last;
        rewrite ^/ctrl(\w+)/(\w+)\.html$ /$1/$2 last;
        rewrite ^/ctrl(\w+)/(\w+)$  /$1/$2?city=$city last;
        
        rewrite ^/ctrl(\w+)/(\w+)/(\w+)$  /$1/$2 last;
        rewrite ^/(\w+)/(\w+)$  /$1/$2?city=$city last;
    	rewrite ^/(\w+)_(\w+)_(\w+)_(\w+)/index(\w+)\.html$ /city/index?city=$city&area=$1&type=$2&tab=$3&order=$4&p=$5? last;
        rewrite ^/(\w+)_(\w+)_(\w+)_(\w+)/$ /city/index?city=$city&area=$1&type=$2&tab=$3&order=$4&p=1? last;
        rewrite ^/(\w+)_(\w+)_(\w+)/index(\w+)\.html$ /city/index?city=$city&area=$1&type=$2&tab=$3&p=$4? last;
        rewrite ^/(\w+)_(\w+)_(\w+)/$ /city/index?city=$city&area=$1&type=$2&tab=$3&p=1? last;
        rewrite ^/* /city/index?city=$city&request_uri=$request_uri last;
    		
    	if ($city = ""){
                rewrite ^/* /;
        }
        
        error_page   404              /40x.html;
        error_page   500 502 503 504  /50x.html;
        
    	
        location / {  
            proxy_set_header        Host $host; 
            proxy_set_header        Remote_Addr $remote_addr; 
            proxy_set_header        X-REAL-IP  $remote_addr;
            proxy_connect_timeout   3;  
            proxy_send_timeout      30;  
            proxy_read_timeout      30;  
            proxy_pass http://area_jjzm_com;
        }  
    }
    

    새로운 수 요 를 만족 시 키 는 설정
    server {
        listen       80;
        server_name  *.jjzm.com;
    	
    	set $city "";
        if ( $host ~* "^(\w+)\.jjzm\.com$") {
            set $city $1;
        }
    	
        #   $uri_type        ,              
    	set $uri_type  "www_uri";
    	if ($request_uri ~* "^/seositemap/(.*)/(\w+).xml$"){
                set $uri_type  "seo_uri";
        }
    	
    	if ($request_uri ~* "^/(\w+)/seositemap/(.*)/(\w+).xml$"){
                set $uri_type  "seo_uri";
        }
           
    	#                    rewrite   
    	if ($uri_type ~ "www_uri"){
    		rewrite ^/web/ $uri last;
            rewrite ^/www/ $uri last;
            rewrite ^/css/ $uri last;
            rewrite ^/images/ $uri last;
            rewrite ^/js/ $uri last;
            
            rewrite ~*\.(css)$ www.jzmmaoyan.com/$1 last;
            rewrite ^/ajax/(\w+)/(\w+)$  /$1/$2 last;
            rewrite ^/ctrl(\w+)/(\w+)\.html$ /$1/$2 last;
            rewrite ^/ctrl(\w+)/(\w+)$  /$1/$2?city=$city last;
         
            rewrite ^/ctrl(\w+)/(\w+)/(\w+)$  /$1/$2 last;
            rewrite ^/(\w+)/(\w+)$  /$1/$2?city=$city last;
    		rewrite ^/(\w+)_(\w+)_(\w+)_(\w+)/index(\w+)\.html$ /city/index?city=$city&area=$1&type=$2&tab=$3&order=$4&p=$5? last;
            rewrite ^/(\w+)_(\w+)_(\w+)_(\w+)/$ /city/index?city=$city&area=$1&type=$2&tab=$3&order=$4&p=1? last;
            rewrite ^/(\w+)_(\w+)_(\w+)_(\w+)$ /city/index?city=$city&area=$1&type=$2&tab=$3&order=$4&p=1? last;
            rewrite ^/(\w+)_(\w+)_(\w+)/index(\w+)\.html$ /city/index?city=$city&area=$1&type=$2&tab=$3&p=$4? last;
            rewrite ^/job/(\w+)\.html$ /common/jobdetail?city=$city&id=$1? last;
            rewrite ^/(\w+)_(\w+)_(\w+)/$ /city/index?city=$city&area=$1&type=$2&tab=$3&p=1? last;
            rewrite ^/(\w+)_(\w+)_(\w+)$ /city/index?city=$city&area=$1&type=$2&tab=$3&p=1? last;
            rewrite ^/* /city/index?city=$city&request_uri=$request_uri last;
    	}
    	
    	if ($city = ""){
                rewrite ^/* /;
        }
        
        error_page   404              /40x.html;
        error_page   500 502 503 504  /50x.html;
        
    	#      1        
    	location  ~*  ^/seositemap/(.*)/(\w+).xml$  {  
            proxy_set_header        Host $host; 
            proxy_connect_timeout   3;  
            proxy_send_timeout      30;  
            proxy_read_timeout      30;
            proxy_pass http://jzmao_timer;
        }
    	#      2        
    	location  ~*  ^/(\w+)/seositemap/(.*)/(\w+).xml$  {  
    		rewrite ^/(\w+)/seositemap/(.*)/(\w+).xml$  /seositemap/$2/$3.xml break;
            proxy_set_header        Host $host; 
            proxy_connect_timeout   3;  
            proxy_send_timeout      30;  
            proxy_read_timeout      30;
            proxy_pass http://jzmao_timer;
        }
           
        location / {  
            proxy_set_header        Host $host; 
            proxy_set_header        Remote_Addr $remote_addr; 
            proxy_set_header        X-REAL-IP  $remote_addr;
            proxy_connect_timeout   3;  
            proxy_send_timeout      30;  
            proxy_read_timeout      30;  
            proxy_pass http://area_jjzm_com;
        }  
    }
    

    핵심 설정 내용 분석
  • 하나의 변 수 를 통 해 $uritype 현재 요청 에 필터 가 필요 한 지 표시 하기
  • Nginx 는 끼 워 넣 은 if 를 지원 하지 않 고 if 에서 논리 연산 자 (& &) 를 사용 하 는 것 도 지원 하지 않 기 때문에 여러 개의 if 를 써 야 합 니 다.간단하게 쓸 수 없다.
  • if (  1 ||   2 ){
        xxx
    }
     
    if (  1 &&   2 ){
        xxx
    }
     
    if (  1){
        if(  2){
        }
    }
    

  • 정규 표현 식: ^/seositemap/(.*)/(\w+).xml$
  • ^/seositemap/: /seositemap/ 로 시작
  • (.*): 중간 에 n 층 경로
  • 가 있다.
  • (\w+).xml: 문자열. xml 로 종료
  • 매 칭 가능:
  • /seositemap/sss/xxx/xxxx1.xml
  • /seositemap/sss/xxx/xx/3333/xx1.xml



  • 주의 사항
  • if( 사이 에 빈 칸 이 있어 야 한다. 그렇지 않 으 면 Nginx 는 명령 으로 잘못 보고 할 것 이다
  • 좋은 웹페이지 즐겨찾기