올 9월경에 간단한 정산내역 확인 발송기 를 제작했었습니다. 환경은 AWS EC2 ubuntu에 올린 것인데 당시 외부접속 포트를 80 및 3000번을 쓰고 있었읍니다.

그런데 사정이 생겨 외부에서 3000번 포트 접속을 막았다는 통보를 받았습니다. 결국 80포트에서 URL하나를 더 설정하여 서버내부에 3000번 포트로 가도록 프록시 설정을 하여 여기에 그 기록을 남깁니다.

먼저 nginx.conf파일(보통 /etc/nginx 에 위치해 있습니다) 을 열어 다음 부분을 http{}섹션에 추가합니다.

        upstream mq{
                server 127.0.0.1:3000;
        }

URL로 http://…/mq 를 추가할 거고 거기에 프록시로 매핑할 내부 서버주소를 적습니다. 재미있는건 이 upstream에 여러대의 서버를 등록하면 nginx가 라운드로빈 방식으로 /mq로 들어오는 요청들을 분산해 준다는 것입니다.

다음에는 /etc/nginx/sites-available/default파일의 수정 입니다. server{}섹션에 다음과 같이 추가합니다.

        location /mq/ {
                proxy_pass http://mq;
                proxy_set_header X-Forwarded-For
                $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;

        }

아시겠지만 이는 URL을 하나 추가하고 여기에 내부 포워딩을 하는 부분입니다.

이제 모든 소스코드(저같은 경우는 index.html)에서 3000번 포트를 바로 바라보았던 부분들을 /mq를 바라보도록 수정을 하면 되겠습니다.

그리고 express서버에서 app.post 부분을 새로 만든 URL을 바라보도록 수정합니다.

app.post('/mq', urlencodedParser, async (req, res) => {

이제 nginx를 reload하고 express서버를 다시 띄우면 됩니다.