DevOps/NginX

서버 하나로 프론트/백 서비스하기 (w. NginX 리버스 프록시)

kimjunseo 2025. 4. 20. 23:17

 

라멘로드를 개발하며 느낀 점 중 하나는 AWS는 비싸다입니다. 

 

고작 1GB 메모리에, 1vCPU 짜리 EC2와 Https 를 위한 ELB 만 해도 매달 45달러.. 한화로 64,089원이 나갑니다.

 

물론 ELB는 트래픽에 비례하기 때문에 사용자가 많아지면 많아질 수록 이용료는 더욱 늘어나겠죠.. 

 

라멘로드 팀은 금전적 문제로 인해 하나의 서버에서 프론트/백을 모두 서비스하기로 결정했습니다. 

 

 

하나의 서버에서 프론트와 백을 모두 서비스하려면 리버시 프록시를 이용하면 됩니다. 

 

리버스 프록시란

리버스 프록시에 대해 내가 설명하는 것보다 설명을 더 잘해주시는 분이 계시니 굳이 제가 할 필요는 없는 것 같습니다.

 

리버스 프록시 설정

프론트와 백은 현재 Docker 로 서비스하고 있는데 프론트는 포트번호 5010번, 백은 포트번호 3000번으로 서비스 중입니다. 

 

따라서 프론트 서버에서 ```https://서버주소/api/~``` 로 요청을 보내면 인터넷을 타지않고 내부 ```http://127.0.0.1:3000``` 로 리다이렉트 시켜주어야 하는데요. 

 

이러한 리버스 프록시 기능은 아래와 같은 nginx conf.d 설정을 통해 구현할 수 있습니다. 

#/etc/nginx/conf.d/ramenroad.conf

server {
    listen 80;
    server_name ramenroad.com; # 또는 EC2의 퍼블릭 IP

    location / {
        proxy_pass http://127.0.0.1:5010; # Node.js, React, 또는 기타 애플리케이                                                                                                                                                             션이 실행 중인 포트
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:3000/; # Node.js, React, 또는 기타 애플리케                                                                                                                                                             이션이>
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

 

위 코드를 통해 프론트엔드에서 ```http://서버주소/api/```로 요청을 보내면, Nginx 프록시가 이를 감지하여 ```http://127.0.0.1:3000/api/```로 요청을 전달합니다.

 

결론

이처럼 리버시 프록시를 이용하면 하나의 서버에서도 외부 인터넷을 거치지 않고 내부 통신으로 백엔드 API에 접근할 수 있어 네트워크 지연을 줄이고, ELB 없이도 프론트와 백을 효율적으로 연결할 수 있습니다. 리버스 프록시 설정만 잘해주면 마치 분리된 서비스처럼 유기적인 구조를 만들 수 있답니다.


라멘로드는 이러한 구조를 통해 최소한의 비용으로 안정적인 서비스를 운영하고 있습니다. 그냥 홈서버를 하나 만들까봐요