2017년 12월 7일 목요일

Nginx로 Reverse-Proxy 구성

Reverse-Proxy란?
  • 사용자의 요청을 받아서 반대편 네트워크에 있는 웹 서버에 전달하는 역할을 함
  • 단순 요청 전달만 함
  • 로드밸런서로의 역할을 할 수 있음
Nginx로 Reverse-Proxy 설정
그림1) Nginx로 Reverse-Proxy 환경 구성도
  • 정적 리버스 프락시 서버 구성
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# cat /etc/nginx/sites-available/default
upstream sample_proxy {
    server 192.168.56.2:8080;
    server 192.168.56.3:8080;
}
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        proxy_pass http://sample_proxy;
    }
}
    • upstream영역에 프락시 대상 호스트의 목록 입력
    • upstream은 proxy할 타겟 서버를 설정을 위해 사용
    • location / 에 대한 모든 요청에 대해서, sample_proxy로 중계한다는 의미
  • 로드 밸런싱 메서드
    • 라운드로빈(Round-robin)은 기본적인  메서드로 모든 서버에 동등하게 요청
      1
      2
      3
      4
      upstream sample_proxy {
          server 192.168.56.2:8080;
          server 192.168.56.3:8080;
      }
      
    • least_conn은 연결이 가장 작은 서버로 요청
      1
      2
      3
      4
      5
      6
      upstream sample_proxy {
          least_conn;
      
          server 192.168.56.2:8080;
          server 192.168.56.3:8080;
      }
      
    • ip_hash는 클라이언트 IP주소를 기준으로 요청을 분배한다. IP주소가 같다면, 동일한 서버로 요청
      1
      2
      3
      4
      5
      6
      upstream sample_proxy {
          ip_hash; 
      
          server 192.168.56.2:8080;
          server 192.168.56.3:8080;
      }
      
    • hash는 유저가 정의한 key나 변수 혹은 이들의 조합을 해시해서 분산
      1
      2
      3
      4
      5
      6
      upstream sample_proxy {
          hash $request_uri consistent;
      
          server 192.168.56.2:8080;
          server 192.168.56.3:8080;
      }
      
    • least_time메서드는 NginX Plus에서 지원, 평균 레이턴시와 연결을 기준으로 검사해서 로드가 적은 서버로 요청
      1
      2
      3
      4
      5
      6
      upstream sample_proxy {
          least_time header; 
      
          server 192.168.56.2:8080;
          server 192.168.56.3:8080;
      }
참고
  • https://www.joinc.co.kr/w/man/12/proxy

댓글 없음:

댓글 쓰기

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.