Nginx Reverse Proxy 설정으로 특정 포트 및 도메인 연결하는 법

    서버 한 대에 여러 개의 백엔드 애플리케이션(Node.js 3000번 포트, Python 8000번 포트, Spring Boot 8080번 포트 등)을 띄워두고, 사용자가 [http://domain.com](http://domain.com)과 같이 표준 80/443 포트로 접근할 때 Nginx가 중계(Reverse Proxy)해 주는 구성은 현대 웹 아키텍처의 표준입니다.

    본 가이드에서는 Nginx Reverse Proxy 기본 개념과 실제 적용 코드를 다룹니다.

    1. Reverse Proxy 구성을 사용하는 이유

    • 내부 애플리케이션 포트(3000, 8000 등)를 방화벽 외부에 직접 노출하지 않아 보안 우수
    • 하나의 서버 IP에서 여러 개의 도메인별 서비스 분기 가능
    • Nginx 단에서 SSL/TLS 암호화 처리(SSL Termination) 담당

    2. 단계별 Nginx Reverse Proxy 구성 방법

    [1단계] Nginx 사이트 설정 파일 생성

    /etc/nginx/sites-available/ 디렉토리에 새로운 설정 파일을 생성합니다.

    Bash

    sudo nano /etc/nginx/sites-available/myproxy.conf
    

    [2단계] Reverse Proxy 설정 구문 작성

    예를 들어 api.mydomain.com으로 접속 시 로컬의 3000번 포트(Node.js/Python 앱)로 바이패스하는 설정입니다.

    Nginx

    server {
        listen 80;
        server_name api.mydomain.com;
    
        location / {
            # 실제 백엔드 앱이 동작 중인 포트로 포워딩
            proxy_pass http://127.0.0.1:3000;
    
            # 헤더 정보 전달 (클라이언트 실제 IP 유지)
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            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_connect_timeout 60s;
            proxy_send_timeout 60s;
            proxy_read_timeout 60s;
        }
    }
    

    [3단계] 심볼릭 링크 생성 및 Nginx 재로드

    설정 파일을 활성화하기 위해 sites-enabled 경로로 심볼릭 링크를 걸어줍니다.

    Bash

    # 심볼릭 링크 생성
    sudo ln -s /etc/nginx/sites-available/myproxy.conf /etc/nginx/sites-enabled/
    
    # Nginx 문법 검사 및 재로드
    sudo nginx -t
    sudo systemctl reload nginx

    답글 남기기

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