Nginx TCP / UDP 에이전트

7481 단어 nginx
이 모듈 은 TCP, UDP, Unix 도 메 인 을 기반 으로 하 는 socket 프로 토 콜 의 프 록 시 서 비 스 를 실현 할 수 있 습 니 다.이 모듈 은 nginx - 1.9 이후 버 전에 추 가 된 모듈 입 니 다. 이 모듈 을 사용 하려 면 이 소스 코드 를 다시 컴 파일 해 야 합 니 다. 이전 블 로그 nginx 설 치 를 참고 하여 컴 파일 옵션 --with-stream 을 추가 하 십시오.이 모듈 을 사용 할 수 있 습 니 다.
TCP 연결 과 UDP 를 기반 으로 한 데이터 보고서 의 역방향 에이 전 트 를 설정 합 니 다.
  • 1. 최상 위 stream {} 블록 만 들 기
  • stream{
    ....
    }
  • 2. stream {} 블록 에 하나 이상 의 server {} 설정 항목
  • 을 만 들 수 있 습 니 다.
  • 3. 각 server {} 설정 블록 에 listen 목표 (IP + 포트 또는 포트) 를 작성 하고 UDP 프로 토 콜 이 라면 udp 인 자 를 포함 합 니 다.stream TCP 는 기본 프로 토 콜 입 니 다.설정 하지 않 으 면 시스템 은 기본적으로 TCP 프로 토 콜 로 감청 합 니 다.
  • stream {
        server {
            listen 12345;
            ...
        }
        server {
            listen 53 udp;
            ...
        }
        ...
    }
  • 4. proxy_pass 옵션 을 이용 하여 프 록 시 서버 나 상위 그룹
  • 을 정의 합 니 다.
    stream {
        server {
            listen     12345;
    
            #TCP traffic will be proxied to the "stream_backend" upstream group
            proxy_pass stream_backend;
        }
    
        server {
            listen     12346;
    
            #TCP traffic will be proxied a proxied server
            proxy_pass backend.example.com:12346;
        }
    
        server {
            listen     53 udp;
    
            #UDP traffic will be proxied to the "dns_servers" upstream group
            proxy_pass dns_servers;
        }
        ...
    }
  • 5. 프 록 시 서버 에 네트워크 인터페이스 가 몇 개 있 으 면 소스 IP 와 소스 포트 를 고정 시 켜 상류 서버 에 연결 할 수 있 습 니 다. proxy_bind 필드 를 선택 하여 연 결 된 특정한 IP 와 포트 를 상류 서버 에 연결 할 수 있 습 니 다 (이 필드 는 선택 가능 합 니 다)
  •   stream {
        ...
        server {
            listen     127.0.0.1:12345;
            proxy_pass backend.example.com:12345;
            proxy_bind 127.0.0.1:12345;
        }
    }

    이 옵션 은 프 록 시 서버 의 네트워크 트 래 픽 을 차단 할 수 있 는 관리자 사용자 의 권한 이 필요 할 수 있 습 니 다. +6. (이 필드 는 선택 할 수 있 습 니 다) 프 록 시 서버 와 상위 그룹 이 데 이 터 를 연결 하 는 양 방향 메모리 캐 시 구역 의 크기 를 조정 할 수 있 습 니 다. 실제 전 송 된 데이터 크기 에 따라 조정 할 수 있 습 니 다. 전송 데이터 가 적 으 면 공간 을 절약 할 수 있 습 니 다. 데이터 양 이 많 으 면 줄 일 수 있 습 니 다 socket read/write
    stream {
        ...
        server {
            listen            127.0.0.1:12345;
            proxy_pass        backend.example.com:12345;
            proxy_buffer_size 16k;
        }
    }

    TCP 와 UDP 부하 균형 설정
  • 1. top-level stream{} 블록 에 하나 이상 upstream{} 의 설정 항목 을 추가 할 수 있 습 니 다. 예 를 들 어 stream_backend TCP server 와 dnsserver 는 UDPservers。
  • stream {
        upstream stream_backend {
            ...    
        }
    
        upstream dns_servers {
            ...    
        }
        ...
    }

    주의: upstream group proxypass。 + 2. upstream 모듈 에서 server 명령 을 사용 하여 각각 upstream 을 정의 합 니 다.도 메 인 이름 이나 IP 주소 에 필요 한 포트 번 호 를 포함 합 니 다.
    stream {
        upstream stream_backend {
            server backend1.example.com:12345;
            server backend2.example.com:12345;
            server backend3.example.com:12346;
            ...
        }
        upstream dns_servers {
            server 192.168.136.130:53;
            server 192.168.136.131:53;
            ...
        }
        ...
    }
  • 3. 부하 균형 을 설정 하 는 방법 은 상류 그룹 을 사용 하 는데 다음 과 같은 방법 을 지정 할 수 있다.
  • round - robin (기본 값)
  • least - con Nginx 현재 연결 수가 가장 적은 서버 선택
  • least_time Nginx 는 최소 지연 시간 과 연결 수가 가장 적은 서버 를 선택 합 니 다.최소 지연 시간 은 아래 매개 변 수 를 바탕 으로 연산 한 것 이다.
  • connect - 상류 서버 연결 시간
  • first_byte 1 바이트 받 은 최 단 시간
  • last_byte 서버 응답 받 기
  • upstream stream_backend {
    least_time first_byte;
    
    server backend1.example.com:12345;
    server backend2.example.com:12345;
    server backend3.example.com:12346;
    }
  • hash 방법, 서버 는 사용자 정의 값 을 기반 으로 합 니 다. 예 를 들 어 원본 IP 주소 ($remote addr)
  •  upstream stream_backend {
        hash $remote_addr;
    
        server backend1.example.com:12345;
        server backend2.example.com:12345;
        server backend3.example.com:12346;
    }
  • 4. (선택 가능 한) 모든 상류 서버 에 고정 적 인 파 라 메 터 를 설정 하고 최대 연결 수, 서버 의 가중치 를 포함한다.
  • upstream stream_backend {
        hash   $remote_addr consistent;
        server backend1.example.com:12345 weight=5;
        server backend2.example.com:12345;
        server backend3.example.com:12346 max_conns=3;
    }
    
        upstream dns_servers {
            least_conn;
            server 192.168.136.130:53;
            server 192.168.136.131:53;
            ...
        }

    좋은 웹페이지 즐겨찾기