Dev

nginx 리버스 프록시 설정하기

Wermut 2025. 2. 27. 02:32

 

리버스 프록시란?

 

클라이언트의 요청을 대신 받아서 실제 서버로 전달하고, 그 응답을 클라이언트에게 다시 전달하는 서버이다.

 

localhost:8000 

해당 주소의 웹사이트를 운영한다 할 때, 사용자애게 포트번호를 노출해 보안적인 취약점이 존재할 수 있을 뿐 아니라

요청이 직접적으로 사이트와 연결되기에 서버의 안정성이 떨어질 수 있다는 위험성이 존재한다.

 

이러한 문제를 해결하고자 등장한 개념이 리버스 프록시이다. 이는 서버를 향한 요청, 클라이언트를 향한 응답 등을 중간에서 필터링해 보안이슈와 서버 안정성을 상당 부분 해결한 구조로 아래 사진과 같이 구성된다.

 

nginx의 리버스프록시 구조

 

 

해당 구조를 웹 서버에 적용하기 위해선 /etc/nginx/sites-available/default 위치의 파일과 /etc/nginx/nginx.conf 파일에

아래 코드를 설정해주어야 한다.

 

// /etc/nginx/sites-available/default

server {

        location / {
                proxy_pass   http://[ IP ]:8000;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }
 }

 

서버 블록안 location 부분만 위 코드와 같이 수정하면 된다.

 

위 코드를 요약하면 [ IP ]:80 으로 클라이언트의 요청이 발생할 때 이 요청을 80번 포트(리버스 프록시 서버)로 받아, 8000번 포트(실제 서버)로 요청을 보내게 된다. 그리고 실제 서버의 응답을 다시 80번 포트로 내보내게 된다. 

 

따라서 클라이언트에게 실제 서버의 포트번호를 노출하지 않고 많은 요청이라도 처리하는 것이 가능하다.