MOYOMOYO
모요 · PERSONAL BLOG

MOYO

생각과 경험을 기록하는 공간입니다.

NGINX에서 proxy_pass 기능을 사용하여 도메인 주소에 따라 포트를 변경해주는 설정

모요조회 5댓글 0

다음은 도메인에 따라 요청을 특정 포트로 전달하는 예시 설정입니다.

  1. NGINX 설치 및 설정 파일 위치
    • 기본적으로 NGINX 설정 파일은 /etc/nginx/nginx.conf 또는 /etc/nginx/conf.d/default.conf에 위치해 있습니다.
    • 설정을 수정하기 전에 기존 설정 파일을 백업하는 것이 좋습니다.
  2. NGINX 설정 파일 수정다음 예제에서는 example1.com 도메인으로 들어오는 요청을 포트 8080으로, example2.com 도메인으로 들어오는 요청을 포트 9443으로 전달하는 설정을 보여줍니다.
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    # Server block for example1.com
    server {
        listen       80;
        server_name  example1.com;

        location / {
            proxy_pass http://localhost:8080;
            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;
        }
    }

    # Server block for example2.com
    server {
        listen       80;
        server_name  example2.com;

        location / {
            proxy_pass http://localhost:9443;
            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;
        }
    }

    # Optional HTTPS server block for example1.com
    server {
        listen       443 ssl;
        server_name  example1.com;

        ssl_certificate     /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;

        location / {
            proxy_pass http://localhost:8080;
            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;
        }
    }

    # Optional HTTPS server block for example2.com
    server {
        listen       443 ssl;
        server_name  example2.com;

        ssl_certificate     /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;

        location / {
            proxy_pass http://localhost:9443;
            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;
        }
    }
}
  1. 설명
    • listen 80;listen 443 ssl;은 각각 HTTP와 HTTPS 요청을 수신하는 설정입니다.
    • server_name은 해당 서버 블록이 처리할 도메인을 지정합니다.
    • location / 블록 내의 proxy_pass 디렉티브는 요청을 지정된 포트로 전달합니다.
    • proxy_set_header 디렉티브는 원본 요청의 헤더를 전달하는 데 사용됩니다.
  2. NGINX 설정 테스트 및 재시작
    • 설정 파일을 저장한 후, 다음 명령어를 사용하여 설정 파일에 오류가 없는지 확인합니다.

      sudo nginx -t
    • 설정 파일에 오류가 없다면, NGINX를 재시작하여 변경 사항을 적용합니다.

      sudo systemctl restart nginx

이 설정을 통해 특정 도메인에 들어오는 요청을 지정된 포트로 프록시할 수 있습니다. 필요한 도메인과 포트 조합에 따라 서버 블록을 추가로 구성하면 됩니다.

#NGINX #PROXY_PASS #프록시 #프록시패스

로그인 후 좋아요

댓글 0

등록된 댓글이 없습니다.