보안된 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 플래그 사용)