본문 바로가기

[Nginx] Nginx 멀티 도메인 배포

@bum0w02025. 7. 29. 19:53

Nginx에서 멀티 도메인을 설정하는 방법

하나의 서버에서 여러 서비스를 운영하다 보면 api.example.com, admin.example.com, shop.example.com 처럼
각 서비스마다 도메인을 다르게 구성해야 할 일이 생긴다.

 

Nginx 활용하여 하나의 인스턴스에서 여러 도메인을 각기 다른 서비스에 연결하는 방법에 대해 알아보자.

 

멀티 도메인 설정을 실습하거나 적용하려면 먼저 각 서비스에 사용할 도메인이 필요하다.

나는 무료 도메인을 발급받을 수 있는 https://내도메인.한국 사이트를 통해 진행했다.

  1. 사이트에 접속 후 회원가입
  2. 원하는 도메인 이름을 검색해 사용 가능한 도메인을 선택
  3. 도메인 관리로 진입하여 발급받은 도메인을 DNS 설정을 통해 실제 서버와 연결 (EC2 IP 주소를 입력하면 된다.)

이렇게 도메인이 서버를 바라보게 되면, 이후 Nginx에서 해당 도메인에 맞는 설정을 추가해 서비스 분기를 할 수 있다.

 

 

1. Server Block

여러 도메인을 처리하는 Nginx의 기본 단위이다. 저번 시간에 배운 설정 파일(default.conf)을 보면 server 블록이 존재한다.

Nginx 에서는 이 server 블록 내부의 server_name 지시어를 통해 따라 각기 다른 도메인 요청을 구분하고, 해당 요청을 처리할 방식을 지정할 수 있다.

// 설정 파일로 이동
$ cd /etc/nginx/conf.d
$ sudo vi default.conf

 

나의 경우, 서로 다른 두 개의 도메인 요청을 각각 다른 서비스로 연결해야 하는 상황을 가정했고 아래처럼 server block을 분리했다.

server {
    listen 80;
    server_name  nginx.r-e.kr;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

server {
    listen 80;
    server_name admin.nginx.r-e.kr;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
설정을 마친 이후에는 꼭 sudo nginx -t 와 sudo nginx -s reload 명령어를 통해 변경사항을 확인하고 반영하자.

 

2. 배포 확인

Nginx 설정을 마쳤다면 각 도메인으로 접근해보며 설정이 정상적으로 적용되었는지 확인해보자.

 

1. http://nginx.r-e.kr

2. http://admin.nginx.r-e.kr

 

만약 연결이 되지 않는다면 다음 사항들을 점검해볼 수 있다:

  • 각 도메인의 DNS 설정이 서버 IP를 제대로 가리키고 있는지 (A 레코드)
  • 각 내부 서비스(예: 8080 포트, 3000 포트)가 정상적으로 실행 중인지
  • server_name이 정확히 요청 도메인을 받고 있는지

 

3. 전체 구조

  • 하나의 EC2 서버에서 Nginx를 통해 두 개의 도메인(nginx.r-e.kr, admin.nginx.r-e.kr)을 처리
  • Nginx가 요청된 도메인에 따라 각각 다른 server block으로 분기
    • nginx.r-e.kr → 사용자용 홈페이지
    • admin.nginx.r-e.kr → 관리자용 홈페이지
  • 클라이언트는 각 도메인으로 접속하여, 해당 서비스에 맞는 응답을 받음
bum0w0
@bum0w0 :: bum0w0 님의 블로그

bum0w0 님의 블로그 입니다.

목차