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

🔍 리버스 프록시가 대체 뭔가요?
쉽게 말하면 리버스 프록시는 손님을 맞이하는 안내 데스크예요. 방문자(클라이언트)가 요청을 보내면, 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는 안 보이거든요. 그래서 이 헤더들로 원래 손님의 정보를 뒤 서버까지 전달해 주는 겁니다. 💡

⚠️ 슬래시(/) 하나로 결과가 달라져요
초보자들이 가장 많이 헷갈리는 부분이 바로 이거예요. 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에 적용할 수 있으니 꼭 챙겨두세요. 🔒

정리하며 😊
오늘은 Nginx 리버스 프록시 설정 방법을 처음부터 끝까지 살펴봤어요. 핵심만 다시 짚으면, ① Nginx를 설치하고 ② proxy_pass로 뒤 서버를 연결하고 ③ 헤더를 전달하고 ④ nginx -t로 검사한 뒤 reload하면 끝! 생각보다 별거 아니죠? 😄
처음엔 슬래시 하나, 포트 번호 하나에 헤맬 수 있어요. 하지만 한 번 성공해 보면 그다음부터는 정말 손쉽게 여러 앱을 연결할 수 있게 됩니다. 자, 이제 여러분 서버에 직접 server 블록 하나 만들어서 도전해 보세요! 막히는 부분이 있으면 nginx -t 결과 메시지부터 천천히 읽어보는 걸 잊지 마시고요. 여러분의 첫 리버스 프록시 설정을 응원합니다! 🎉