본문 바로가기

DevOps/NGINX

NGINX MSA 디지털 트레이닝 - 2강 : Reverse Proxy

반응형

NGINX에서 제공하는 디지털 트레이닝 코스 수강 하면서 정리한 내용이다.

1. Proxy

  • Forward Proxy : Client Side에서 실제 요청한 Client를 숨기고, 그를 대신해 요청을 전달.
  • Reverse Proxy : Server Side에서 실제 Backend Server를 숨기면서 그 역할을 대신 수행.

2. Reverse Proxy 설정을 위한 Directive

  • Syntax : proxy_pass ;
    • 수신된 Request를 으로 정의된 backend server의 URL로 전달
    • 의 address는 Domain name, IP Address&port number, unix socket, upstream name, 변수 집합으로 구성될 수 있다.
    • ex)
      location / { 
      proxy_pass http://192.168.100.1:9001/api; 
      }
  • Remark : 일반적으로 proxy_pass는 server 및 location context에서만 사용됨.

3. Redefining Request Headers

  • Syntax : proxy_set_header <new_value>;
    • NGINX가 Reverse Proxy로 동작할 때, Backend Server와 연결되기전 Client와의 연결을 종료시키는데 이 과정에서 Client에 대한 몇 정보가 소실됨.
    • 소실되는 정보 중 Backend Server에서 유용할 수 있는 정보를 재정의하는 과정 필요.
    • Ex)
      • Line 3 : Client 요청 중 Header의 Host값을 Backend Server로 전달할 때 그대로 Host 값으로 사용
      • Line 4 : 요청한 Client의 주소($remote_addr)를 X-Real-IP라는 이름의 Header로 재정의
      • Line 5 : Proxy가 2개 이상 사용됐을 경우에 X-Forwarded-For로 정의되는 Header와 클라이언트의 주소를 계속 중첩해서 재정의
      • server { 
        listen 80; 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        ... 
        location / { 
            proxy_pass http://192.168.100.1:9001/api; 
        } 
        }