Nginx 리버스 프록시 설정, 5분이면 끝나는 진짜 쉬운 방법

Nginx 리버스 프록시 설정, 5분이면 끝나는 진짜 쉬운 방법

“서버 하나에 여러 앱을 돌리고 싶은데, 포트 번호 8080, 3000 이런 거 매번 붙이기 너무 귀찮지 않으세요?” 😅 아니면 백엔드 서버를 외부에 그대로 노출하는 게 좀 불안하셨나요? 그럴 때 딱 필요한 게 바로 Nginx 리버스 프록시예요. 이 글을 다 읽고 나면 여러분도 직접 설정 파일을 만들고, 도메인 하나로 여러 앱을 깔끔하게 연결할 수 있게 됩니다. 어렵지 않으니 천천히 따라와 보세요. 👍

A clean modern illustration of a network diagram, a glowing central server labeled Nginx acting as a gateway, with arrows flowing from multiple user devices on the left to several small backend application servers on the right, soft blue and teal color palette, isometric style, bright and friendly tech atmosphere

🔍 리버스 프록시가 대체 뭔가요?

쉽게 말하면 리버스 프록시는 손님을 맞이하는 안내 데스크예요. 방문자(클라이언트)가 요청을 보내면, Nginx가 그 요청을 받아서 뒤에 숨어 있는 진짜 서버로 대신 전달해 주는 거죠. 손님은 뒤에 어떤 서버가 몇 대나 돌아가는지 전혀 몰라도 됩니다.

이렇게 하면 좋은 점이 많아요. 대표적으로 이런 것들이죠.

  • 보안 강화: 백엔드 서버의 실제 주소가 밖으로 드러나지 않아요.
  • 부하 분산(로드 밸런싱): 서버 여러 대에 요청을 나눠줘서 한 대가 뻗어도 다른 서버가 이어받아요.
  • SSL 처리 한곳에서: HTTPS 인증서를 Nginx에서 한 번에 관리할 수 있어요.
  • 단일 접점: 로그와 모니터링이 한곳으로 모여서 관리가 편해집니다.

⚙️ 1단계: Nginx 설치하기

먼저 Nginx가 있어야겠죠? 우분투(Ubuntu) 기준으로는 아래 명령어 한 줄이면 됩니다.

sudo apt update
sudo apt install nginx -y

설치가 끝났으면 브라우저에서 서버 IP로 접속해 보세요. Nginx 기본 환영 페이지가 뜬다면 성공이에요! 😊 록키 리눅스나 알마리눅스 같은 RHEL 계열이라면 apt 대신 dnf를 쓰면 됩니다.

📝 2단계: 핵심! proxy_pass 설정하기

Nginx 리버스 프록시의 심장은 바로 proxy_pass라는 한 줄이에요. 이게 “이 요청은 뒤에 있는 저 서버로 보내라”고 알려주는 명령어입니다. 예를 들어 내 앱이 3000번 포트에서 돌아가고 있다면, 설정 파일에 이렇게 적으면 돼요.

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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 줄들이 왜 중요하냐면요, 이걸 안 넣으면 백엔드 서버가 “누가 접속했는지” 정보를 잃어버려요. Nginx만 보이고 진짜 방문자 IP는 안 보이거든요. 그래서 이 헤더들로 원래 손님의 정보를 뒤 서버까지 전달해 주는 겁니다. 💡

A close-up illustration of a computer terminal screen showing colorful nginx configuration code with proxy_pass highlighted in bright green, dark editor background, glowing cursor, cozy developer desk with a coffee mug beside it, warm ambient lighting

⚠️ 슬래시(/) 하나로 결과가 달라져요

초보자들이 가장 많이 헷갈리는 부분이 바로 이거예요. proxy_pass 주소 끝에 슬래시가 있느냐 없느냐에 따라 동작이 완전히 달라집니다.

  • proxy_pass http://backend; → 요청 경로가 그대로 전달돼요. (/api/users → /api/users)
  • proxy_pass http://backend/; → location과 겹치는 부분이 잘려나가요. (/api/users → /users)

내 앱이 원하는 경로가 뭔지 잘 확인하고 슬래시를 붙이거나 빼세요. 이거 하나 때문에 “왜 404가 뜨지?” 하고 밤새우는 분들 정말 많거든요. 😂

🔄 3단계: 설정 검사하고 적용하기

설정 파일을 다 썼다고 바로 재시작하면 안 돼요. 먼저 문법 검사부터 하는 습관을 들이세요. 오타 하나로 서버가 안 켜지면 곤란하니까요.

sudo nginx -t        # 설정 문법 검사
sudo nginx -s reload # 문제없으면 무중단 재적용

nginx -t가 “syntax is ok, test is successful”라고 답해주면 통과예요! reload는 서비스를 끊지 않고 새 설정을 적용해 주니까 운영 중인 서버에서도 안심하고 쓸 수 있습니다. 👍

🚨 자주 만나는 문제와 해결법

설정을 마쳤는데도 화면에 오류가 뜬다면, 대부분 아래 두 가지 중 하나예요.

  • 502 Bad Gateway: 뒤에 있는 백엔드 앱이 안 켜져 있거나, 포트 번호가 틀린 경우예요. 앱이 정말 그 포트에서 돌고 있는지 확인해 보세요.
  • 504 Gateway Timeout: 백엔드 응답이 너무 느린 경우예요. proxy_read_timeout 같은 타임아웃 값을 늘려보면 도움이 됩니다.

참고로 실서비스라면 HTTPS는 거의 필수예요. Let’s Encrypt와 Certbot을 쓰면 무료로 SSL 인증서를 발급받아 자동으로 Nginx에 적용할 수 있으니 꼭 챙겨두세요. 🔒

A friendly cartoon illustration of a relieved developer giving a thumbs up in front of a large monitor displaying a green checkmark and a secure padlock icon, warm office setting with plants, soft natural daylight, cheerful and reassuring mood

정리하며 😊

오늘은 Nginx 리버스 프록시 설정 방법을 처음부터 끝까지 살펴봤어요. 핵심만 다시 짚으면, ① Nginx를 설치하고 ② proxy_pass로 뒤 서버를 연결하고 ③ 헤더를 전달하고 ④ nginx -t로 검사한 뒤 reload하면 끝! 생각보다 별거 아니죠? 😄

처음엔 슬래시 하나, 포트 번호 하나에 헤맬 수 있어요. 하지만 한 번 성공해 보면 그다음부터는 정말 손쉽게 여러 앱을 연결할 수 있게 됩니다. 자, 이제 여러분 서버에 직접 server 블록 하나 만들어서 도전해 보세요! 막히는 부분이 있으면 nginx -t 결과 메시지부터 천천히 읽어보는 걸 잊지 마시고요. 여러분의 첫 리버스 프록시 설정을 응원합니다! 🎉

함께 보면 좋은 글

방화벽 설정 기초, 알고 보면 어렵지 않아요! 컴퓨터 지키는 첫걸음

중복 보험 확인하는 방법, 매달 새는 보험료부터 잡아보세요

함께보면 좋은글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다