NGINX로 멀티 도메인 호스팅하기

2025. 1. 27. 11:43·운영체제 (OS)/리눅스 (Linux)

NGINX의 사이트 설정은 /etc/nginx/sites-available/ 및 /etc/nginx/sites-enabled/ 디렉토리에서 관리됩니다. 이 설정을 통해 여러 웹 사이트를 호스팅하거나, 각 사이트에 대한 구체적인 구성을 정의할 수 있습니다. 아래는 NGINX 사이트 설정에 대한 구체적인 설명입니다.


1. 기본 디렉토리 구조

/etc/nginx/sites-available/: 모든 사이트 설정 파일이 저장되는 곳입니다. 이 디렉토리의 파일은 NGINX가 직접 사용하지 않으며, 설정 파일을 보관하는 용도로 사용됩니다.
/etc/nginx/sites-enabled/: 실제로 NGINX가 사용하는 설정 파일이 저장되는 곳입니다. sites-available의 파일을 심볼릭 링크로 연결하여 활성화합니다.

2. 새로운 사이트 설정 파일 생성

sites-available 디렉토리에 새로운 설정 파일을 생성합니다. 예를 들어, example.com 사이트를 설정하려면:

sudo nano /etc/nginx/sites-available/example.com

아래는 기본적인 NGINX 설정 예시입니다:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # 추가 설정 (예: 로깅)
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}
  • listen 80;: HTTP(80) 포트에서 요청을 수신합니다.
  • server_name: 도메인 이름을 지정합니다. 여러 도메인을 공백으로 구분하여 추가할 수 있습니다.
  • root: 사이트의 루트 디렉토리를 지정합니다.
  • index: 기본 인덱스 파일을 지정합니다.
  • location / {}: 요청된 URI에 대한 처리를 정의합니다.

파일을 저장하고 종료합니다 (Ctrl + X → Y → Enter).

3. 사이트 활성화

sites-available의 설정 파일을 sites-enabled로 심볼릭 링크를 생성하여 활성화합니다.

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

4. NGINX 설정 테스트

설정 파일에 오류가 없는지 테스트합니다.

sudo nginx -t

출력 결과가 syntax is ok 및 test is successful이면 정상입니다.

5. NGINX 재시작

변경 사항을 적용하기 위해 NGINX를 재시작합니다.

sudo systemctl restart nginx

6. 추가 설정 예시

1. HTTPS 설정 (SSL/TLS)

Let's Encrypt 등을 사용해 SSL 인증서를 발급받은 후, 다음과 같이 설정할 수 있습니다.

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    root /var/www/example.com;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

2. 리버스 프록시 설정

NGINX를 리버스 프록시로 사용할 경우:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:3000; # 백엔드 서버 주소
        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;
    }
}

3. 정적 파일 캐싱

정적 파일에 대한 캐싱을 설정할 경우:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

7. 사이트 비활성화

사이트를 비활성화하려면 sites-enabled의 심볼릭 링크를 삭제합니다.

sudo rm /etc/nginx/sites-enabled/example.com

그 후 NGINX를 재시작합니다.

sudo systemctl restart nginx

8. 로그 확인

설정한 로그 파일을 통해 접속 로그와 오류 로그를 확인할 수 있습니다.

tail -f /var/log/nginx/example.com.access.log
tail -f /var/log/nginx/example.com.error.log

이제 NGINX를 사용해 웹 사이트를 구체적으로 설정할 수 있습니다. 필요에 따라 추가 설정을 적용하세요

 

 

 

 

 

'운영체제 (OS) > 리눅스 (Linux)' 카테고리의 다른 글

[PHP 설정 가이드] PHP-FPM 완벽 설정 방법  (0) 2025.01.28
우분투에서 MySQL/MariaDB 완벽 설치 및 설정 가이드  (1) 2025.01.28
우분투 PHP 설치 및 Nginx 연동 가이드  (1) 2025.01.27
Ubuntu에서 Apache 설치 및 설정하기  (1) 2025.01.27
우분투에서 Nginx를 설치하는 방법  (0) 2025.01.27
'운영체제 (OS)/리눅스 (Linux)' 카테고리의 다른 글
  • 우분투에서 MySQL/MariaDB 완벽 설치 및 설정 가이드
  • 우분투 PHP 설치 및 Nginx 연동 가이드
  • Ubuntu에서 Apache 설치 및 설정하기
  • 우분투에서 Nginx를 설치하는 방법
체리모찌
체리모찌
inknotes 님의 블로그 입니다.
  • 체리모찌
    모먼트로그
    체리모찌
    • 분류 전체보기 (32)
      • 일상 이야기 (6)
        • 영화 리뷰 (2)
        • 드라마 리뷰 (4)
      • 운영체제 (OS) (14)
        • 윈도우 (Windows) (1)
        • 리눅스 (Linux) (13)
      • 파이썬 (Python) (9)
      • 정보나눔 (3)
  • 최근 글

  • 최근 댓글

  • 인기 글

  • 태그

    코딩
    웹툰원작
    김호민
    nginx
    프로그래밍
    눅스서버
    스터디그룹3화
    개발
    청춘드라마
    우분투
    황민현
    파이썬 기초
    스터디그룹
    python
    서버최적화
    웹사이트속도개선
    파이썬
    스터디그룹4화
    스터디그룹리뷰
    nginx캐싱
    서버관리
    스터디드라마
    웹서버
    중증외상센터리뷰
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.3
체리모찌
NGINX로 멀티 도메인 호스팅하기
상단으로

티스토리툴바