Nginx 역방향 프 록 시 를 통 해 IP 액세스 분 류 를 실현 합 니 다.

2736 단어
Nginx 를 통 해 역방향 프 록 시 를 통 해 분 류 를 실현 하여 서버 의 부하 와 압력 을 줄 이 는 것 은 비교적 흔히 볼 수 있 는 서버 배치 구조 이다.본 고 는 어떻게 경로 IP 에 따라 분류 하 는 방법 을 공유 할 것 이다.
특정 IP 에 따라 분류 가 이 루어 집 니 다.
  • IP 주소 의 마지막 부분 을 0 또는 2 또는 6 으로 test - 01. com 에 전송 하지 않 으 면 test - 02. com 에 전송 하여 실행 합 니 다.
  • upstream test-01.com {
      server 192.168.1.100:8080;
    }
    
    upstream test-02.com {
      server 192.168.1.200:8080;
    }
    
    server {
    
      listen 80;
      server_name www.test.com;
    
      location / {
        if ( $remote_addr ~* ^(.*)\.(.*)\.(.*)\.*[026]$){
             proxy_pass http://test-01.com;
             break;
            }
            proxy_pass http://test-02.com;
        }
    }
    
  • IP 주소 앞의 3 단 을 192.168.202. * test - 01. com 으로 전송 하여 실행 하지 않 으 면 test - 02. com 으로 전송 하여 실행 합 니 다.
  • upstream test-01.com {
      server 192.168.1.100:8080;
    }
    
    upstream test-02.com {
      server 192.168.1.200:8080;
    }
    
    server {
    
      listen 80;
      server_name www.test.com;
    
      location / {
            if ( $remote_addr ~* ^(192)\.(168)\.(202)\.(.*)$) {
               proxy_pass http://test-01.com;
               break;
            }
            proxy_pass http://test-02.com;
       }
    
    }
    

    지 정 된 범위 의 IP 에 따라 분 류 를 실현 하 다
    IP 주소 의 마지막 부분 을 1 - 100 으로 test - 01. com 에 전송 하여 실행 하지 않 으 면 test - 02. com 에 전송 하여 실행 합 니 다.
    upstream test-01.com {
      server 192.168.1.100:8080;
    }
    
    upstream test-02.com {
      server 192.168.1.200:8080;
    }
    
    server {
    
      listen 80;
      server_name www.test.com;
    
      location / {
         if ( $remote_addr ~* ^(.*)\.(.*)\.(.*)\.[1,100]$){
              proxy_pass http://test-01.com;
              break;
         }
         proxy_pass http://test-02.com;
      }
    
    }
    

    forwarded 주소 에 따라 분류
    IP 주소 의 1 단 을 212 로 시작 하 는 방문 을 test - 01. com 으로 전송 하여 실행 하지 않 으 면 test - 02. com 으로 전송 하여 실행 합 니 다.
    upstream test-01.com {
      server 192.168.1.100:8080;
    }
    
    upstream test-02.com {
      server 192.168.1.200:8080;
    }
    
    server {
    
      listen 80;
      server_name www.test.com;
    
      location /  {
          if ( $http_x_forwarded_for ~* ^(212)\.(.*)\.(.*)\.(.*)$){
              proxy_pass http://test-01.com;
              break;
          }
          proxy_pass http://test-02.com;
      }
    
    }
    

    if 명령 의 역할
    if 명령: 표현 식 의 값 이 진짜 인지 아 닌 지 를 판단 합 니 다 (true). 실제 라면 뒤의 괄호 에 있 는 내용 을 실행 합 니 다.
    다음은 조건 식 의 일반적인 비교 방법 입 니 다.
  • 변수의 완전 비 교 는 = 또는! =연산 자
  • 부분 이 일치 하면 사용 하거나 * 의 정규 표현 식 으로 표시 할 수 있 습 니 다
  • ~ 대소 문자 구분 표시
  • ~ * 대소 문 자 를 구분 하지 않 음 (nginx 와 Nginx 는 같 음)
  • !와! *역작 동
  • 파일 사용 - f 또는! -f 연산 자
  • 디 렉 터 리 에 사용 - d 또는! -d 연산 자
  • 파일, 디 렉 터 리 또는 기호 연결 에 사용 - e 또는! -e 연산 자
  • 파일 이 실 행 될 수 있 는 지 확인 - x 또는! -x 연산 자
  • 정규 표현 식 의 부분 매 칭 은 괄호 를 사용 할 수 있 습 니 다. 일치 하 는 부분 은 뒤에서 $1 ~ $9 변 수 를 대체 할 수 있 습 니 다
  • 좋은 웹페이지 즐겨찾기