Next.js 배포에 Nginx가 필수일까?

feat. 도커 이미지 뜯어보기
찬찬잉's avatar
Mar 06, 2026
Next.js 배포에 Nginx가 필수일까?
최근 프로젝트를 진행하며 직접 경험한 Next.js 배포의 비밀에 대해 써보려고 합니다.
보통 Vue나 React 같은 SPA 프레임워크를 배포할 때는 Nginx가 당연히 필요하다고 생각했는데, Next.js는 도커로 말아서 올리니 Nginx 없이도 포트 매핑만으로 너무 잘 돌아가더라고요? 왜 이런 차이가 발생하는지, 그리고 도커 이미지 내부에는 무엇이 들어있는지 정리해 보았습니다.

1. Vue3 vs Next.js: 왜 하나는 Nginx가 필요하고 하나는 없을까?

결론부터 말하면 "서버가 내장되어 있느냐 아니냐"의 차이입니다.
  • Vue3 (정적 SPA): 빌드하면 index.html, js, css 파일만 남습니다. 이 파일들은 스스로 실행될 능력이 없는 '책'과 같습니다. 그래서 이 책을 읽어줄 '사서(Nginx)'가 반드시 필요합니다.
  • Next.js (SSR): Next.js는 단순한 라이브러리가 아니라 Node.js 서버를 포함한 프레임워크입니다. next start를 실행하는 순간 자체적인 HTTP 서버가 뜨기 때문에, 별도의 웹 서버 없이도 도커 포트 포워딩만 해주면 바로 서비스가 가능합니다.

2. 도커로 배포할 때 Nginx는 아예 안 쓰나요?

꼭 그렇지는 않습니다! Next.js 단독으로도 돌아가지만, 실서비스에서는 여전히 Nginx를 앞단에 두는 경우가 많습니다.
  • SSL(HTTPS) 적용: Next.js 코드에서 직접 인증서를 관리하는 것보다 Nginx에서 설정하는 게 훨씬 편합니다.
  • 리버스 프록시: 여러 개의 컨테이너를 도메인에 따라 분기 처리할 때 유리합니다.
  • 보안: 실제 앱 서버를 외부에 직접 노출하지 않고 Nginx라는 방어막을 하나 두는 셈이죠.

3. 도커 이미지(.tar) 안에는 무엇이 들어있을까?

궁금해서 docker save로 추출한 이미지 파일을 직접 열어보았습니다. .tar 파일을 까보면 sha256이라는 이름의 수많은 폴더(레이어)와 조립 설명서인 manifest.json이 나옵니다.
  • 레이어 구조: 도커는 한 번에 통으로 저장하지 않고, OS 층 / Node.js 설치 층 / 소스 코드 층으로 나눠서 쌓습니다.
  • Node.js는 어디에? 이미지 레이어 중 용량이 큰(약 100MB 이상) 파일을 찾아 압축을 풀어보면, usr/local/bin/node 경로에 실행 파일이 숨어있습니다.
notion image
  • 결론: 우리가 만든 도커 이미지는 [OS + Node.js 실행기 + 내 코드]가 하나로 합쳐진 밀키트 상태인 것입니다.

마치며

Next.js는 그 자체로 강력한 서버 기능을 갖추고 있어 배포가 매우 유연합니다. 도커 이미지의 내부 구조를 이해하고 나니 배포 과정이 훨씬 더 명확해진 것 같네요
 
비슷한 고민을 하시는 분들께 도움이 되었으면 좋겠습니다!
 
Share article

찬찬잉