보안된 MCP 서버 구축: NGINX + Supergateway + Render 활용 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 개발자 (MCP 서버 배포 및 보안 설정이 필요한 프론트엔드/백엔드 개발자)
- 난이도: 중급 (NGINX, Supergateway, Docker 기본 지식 필요)
핵심 요약
- MCP 서버 보안 위해 NGINX 기본 인증 및 Supergateway 프로토콜 전환 활용
- Dockerfile 기반 Render 배포로 클라우드 호스팅 가능
- OAuth 2.1 지원을 통한 고급 인증 구현 가능
섹션별 세부 요약
1. MCP 서버 기본 아키텍처
- stdio 방식: 로컬 호스트 내 클라이언트-서버 통신
- SSE/WebSocket 방식: HTTP 기반 원격 서버 통신 (Claude 등 외부 도구 활용)
- Supergateway 사용 시 stdio → SSE/WS 전환 가능
2. NGINX 기반 보안 설정
- Basic Auth 적용:
- auth_basic
설정을 통해 사용자 인증 강제
- .htpasswd
파일 생성으로 사용자/비밀번호 관리
- HTTP 헤더 전달 설정:
- proxy_set_header
로 클라이언트 IP 및 호스트 정보 전달
- proxy_buffering off
으로 실시간 데이터 전송 보장
3. Dockerfile 및 Render 배포
- Python 3.10 기반 이미지 사용:
- nginx
, apache2-utils
, nodejs
패키지 설치
- nginx.conf
파일 복사 및 로그 디렉토리 설정
- CMD 명령어:
- nginx
실행 + supergateway
서버 실행 (--stdio
, --port 5000
)
- 포트 8000으로 외부 접근 허용
4. 인증 헤더 전달 및 OAuth 확장
- Base64 인코딩 사용:
- curl -u user:testuser1234!
명령어로 인증 토큰 생성
- Authorization: Basic <
헤더 전달
- OAuth 2.1 지원:
- --oauth2Bearer
플래그로 Auth0/Clerk 등 OAuth 제공자 연동 가능
결론
- NGINX + Supergateway 조합으로 MCP 서버 보안 강화
- Dockerfile 기반 Render 배포로 클라우드 호스팅 간편화
- OAuth 2.1 활용 시 고급 인증 구현 가능 (예:
--oauth2Bearer
플래그 사용)