[Nginx] Nginx Reverse Proxy 설정

탱귤생귤·2024년 4월 21일
0

Infra

목록 보기
3/7

Nginx Reverse Proxy란?

쉽게 생각하면 /api가 포함된 링크가 들어오면 백엔드 서버로, /만 있는 것은 프론트 서버로 보내는 것처럼 클라이언트와 웹 서버 간의 중재를 하는 일을 위해 설정한다. 이것을 하면 좋은 점은 여러 서버에 트래픽을 분산시켜줘서 서버에 부하를 줄여준다.(=로드밸런싱)

  • Upstream 블록 설정
    • Upstream : 클라이언트→DB 방향 (↔ Downstream : DB→클라이언트)
    • 우리는 EC2서버 하나로만 작업을 하기 때문에 블록을 지정하지 않아도 됨.(여러개면 지정해줘야함)
  • vim /etc/nginx/conf.d/default.conf 설정
    	location / {
    		# docker inspect haryeom-fe <check gateway>
    		# proxy_pass http://172.17.0.1:3000;
    		proxy_pass http://도메인:3000;
    		# root
    		/usr/share/nginx/html;
    		# index index.html index.htm;
    		proxy_redirect off;
    		charset utf-8;
    
    		proxy_set_header Host $host;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		proxy_set_header X-Forwarded-Proto scheme;
    	}
    • proxy_set_header Host $host;
    • proxy_redirect off;
      • 백엔드 서버에 의해 촉발된 리다이렉션에 대해 로케이션 HTTP 헤더에 나타나는 URL을 재작성합니다.
      • https://12bme.tistory.com/367
    • proxy_set_header X-Forwarded-For
      • 프록시나 로드 밸런서를 통해 들어온 요청에서 클라이언트의 원 IP주소를 확인하기 위해 사용하는 헤더값
      • nginx에서 X-Forwarded-For 헤더값을 설정해서 Client IP를 확인할 수 있음
    • proxy_set_header X-Real-IP
      • 애플리케이션에서 Client IP를 확인하기 위해 사용하는 헤더값
      • X-Forwarded-For과 다르게 헤더값을 변조할 수 없음
      • https://sg-choi.tistory.com/540
    • proxy_set_header X-Forwarded-Proto
      • X-Forwarded-Proto(XFP)
        • 클라이언트가 프록시 또는 로드 밸런서에 접속하는데에 사용했던 프로토콜(HTTP/HTTPS)이 무엇인지 확인하는 사실상의 표준 헤더
        • AWS로 Elastic Load Balancer(ELB)로 Instance 인프라를 구성 할 경우, 클라이언트와 로드밸런서 간의 사용된 프로토콜을 확인하기 위해서 Apache/Nginx 에서 X-Forwarded-Proto으로 리디렉션(Redirection)를 설정해줘야 한다.
        • https://linked2ev.github.io/devlog/2019/07/21/WEB-What-is-X-Forwarded-Proto/

0개의 댓글