반응형

reverse proxy ?

- 외부에서 내부 서버가 제공하는 서비스에 접근할 경우, proxy server(nginx)를 통해서 들어오는 방식
- 클라이언트 -> 프록시 -> 서버

reverse proxy 왜 사용?

- 사용자 요청 분산 역할(로드밸런싱)
- 서버로 직접 접근하는 것을 막는다. (IP및 포트 숨김 가능) 

예) http://www.test.com/web1 접근 시 1.2.3.4:8080 으로,                                                                            http://www.test.com/web2 접근시 1.2.3.4:8081 로 연결해줄 수 있게 함

forward proxy는?

- 일반적인 프록시
- 클라이언트 -> 프록시 -> 서버 
- 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할수 있으므로 보안이 매우 중요한 기업 환경등에서 많이 사용함

 

NGINX에서 설정하기

설정파일 : /etc/nginx/sites-enabled/default 

파일을 열어보면 대략 이렇게 생겼다.

기본적인 설정은 아래와 같다.

location / { //경로 설정
     proxy_pass http://123.45.678.90:8080;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header HOST $http_host;
}
  • proxy_pass
    기본 설정. 들어온 요청을 어디로 포워드 해줄건지 설정함.
    현재 서버에 / 로 시작하는 path로 접근하면, http://123.456.78.90:8080 으로 접근하게 됨.
  • proxy_set_header
    프록시 서버에 특정 헤더를 전달하기 위한 설정
  • X-Forwarded-For
    HTTP 프록시를 통해 웹 서버에 접속하는 클라이언트의 IP 주소를 식별하는 표준 헤더
    클라이언트와 서버 중간에서 트래픽이 프록시나 로드 밸런서를 거치면, 서버 접근 로그에는 프록시나 로드 밸런서의 IP 주소만을 담고 있다. 
    클라이언트의 원 IP 주소를 보기위해 X-Forwarded-For 요청 헤더가 사용된다.
    Apache는 ProxyPass를 사용할 경우 기본으로 X-Forwarded-For 헤더를 구성하지만 nginx는 직접 구성해줘야 한다.
  • $proxy_add_x_forwarded_for
    $http_x_forwarded_for,$remote_addr 와 동일함
    클라이언트의 IP 주소를 담고있는 $remote_addr 를 X-Forwarded-For Header의 값으로 추가해 줌
  • HOST $http_host;
    HTTP Request 의 Host 헤더값
    http 요청이 들어 왔을 시 호스트 명

 

location /web1 {
     proxy_pass http://1.2.3.4:8080;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header HOST $http_host;
}

location /web2 { 
     proxy_pass http://1.2.3.4:8081;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header HOST $http_host;
}
반응형

+ Recent posts