Nginx (forward proxy, reversed proxy, load balancer)

오민석·2021년 1월 17일
0

Nginx

개념

 - Proxy란 : 자신을 통해서 다른 네트워크에 간접적으로 접속 할 수 있게 해주는 컴퓨터/프로그램
 - Proxy 서버 구축 이유 : 			
 	1) 보안 : 익명의 사용자가 서버에 직접 접근 방지
        2) 속도 : Proxy서버는 사용자의 요청을 cache해서 동일한 요청이 들어오면 cache자원 반환하여
                 빠르게 응답한다(성능). 
        	 불필요한 리소스 낭비를 방지한다. Static 데이터 반환(이미지, css, js, pdf 등).
                 ex) 정적파일은 nginx가 처리하고, nodejs로 요청을 넘겨주기 때문에 백엔드서버에 부담을 덜어준다.
        3) 클라이언트 요청 처리를 분산시킬 수 있는 로드 밸런스 기능
        4) 클라이언트는 Nginx 포트로만 백엔드 서버에 접근 할 수 있어 보안 기능
           Nginx의 80포트를 이용해서 Reverse Proxy통해 백엔드 서버에 접근한다.
	5) 웹서버로써 

기본 구조

/etc/nginx: 해당 디렉터리는 Nginx를 설정하는 디렉터리입니다.모든 설정을 이 디렉터리 안에서 합니다.

/etc/nginx/nginx.conf: Ngnix의 메인 설정 파일로 Nginx의 글로벌 설정을 수정 할 수 있습니다.

/etc/nginx/sites-available: 해당 디렉터리에서 프록시 설정 및 어떻게 요청을 처리해야 할지에 대해 설정 할 수 있습니다.

/etc/nginx/sites-enabled: 해당 디렉터리는 sites-available 디렉터리에서 연결된 파일들이 존재하는 곳 입니다.이 곳에 디렉터리와 연결이 되어 있어야 nginx가 프록시 설정을 적용합니다.

/etc/nginx/snippets: sites-available 디렉터리에 있는 파일들에 공통적으로 포함될 수 있는 설정들을 정의할 수 있는 디렉터리 입니다.

Forward Proxy

- 프록시 서버는 client, Application Server사이에 위치한다. 
  클라이언트에게 미리 저장해둔 정적 데이터를 반환하는 역할을 한다.
- 장점 : 캐싱기능

Reversed Proxy

- 프록시 서버는 요청된 URI에 매핑된 서버로 중계를 한다. 
- 백앤드 infra를 숨김

서버는 어느 클라이언트에서 요청이 왔는지 모르고 클라이언트도 어느 서버로 요청을 보내야 하는지 모릅니다. 
다만 reverse proxy를 매개로 요청과 응답을 주고 받을 뿐이죠. 
따라서 백앤드가 어떻게 구성되어 있는지 클라이언트는 알 수가 없습니다.
- 

로드밸런싱

  - 하나의 웹 서비스에 발생하는 트래픽이 많을 때, 여러대의 서버를 이용해서 요청 처리.
    로브 밸런서는 리버스 프로시의 한 종류. 리버스 프로시의 특징을 포함하며 추가적으로 요청을 서버에 분산시킨다. 
  - 종류
      1) 라운드 로빈(default)
          - 실제 서버들을 처음부터 차례로 선택해 간다, 모든 서버로 균등하게 분산 된다. 
          - 장점 : 거의 5:5 로 분산이 가능하다.
          -  단점 : 경로 보장이 되지 않는다.

      2) Least-connected : 접속수가 가장 적은 서버를 선택한다. 
       - 장점 : 거의 5:5 로 분산이 가능하다.
       - 단점 : 경로 보장이 되지 않는다.
      3) ip-hash : Hasing key 를 사용하여 IP 별로 Index 를 생성하여 경로를 지정한다. 
       - 장점 : 경로 보장이 된다. 
       - 단점 : 5:5 로 분산이 어렵다.
     

참고 :

 https://tmdahr1245.tistory.com/128
 https://jay-ji.tistory.com/50
 https://ssungkang.tistory.com/entry/DevOps-Reverse-Proxy-vs-Load-Balancer-%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C-vs-%EB%A1%9C%EB%93%9C-%EB%B2%A8%EB%9F%B0%EC%84%9C

0개의 댓글