CentOS 9에서 Nginx 최신 버전 설치 및 설정 방법

시스템 업데이트 및 기본 설정

먼저 시스템을 최신 상태로 업데이트합니다.

sudo yum update

필요한 경우 EPEL 저장소를 설치합니다.

sudo yum install epel-release

Nginx를 설치합니다.

sudo yum install nginx

Nginx를 실행하고 부팅 시 자동으로 시작되도록 설정합니다.

sudo systemctl start nginx
sudo systemctl enable nginx

서비스 상태를 확인하려면 다음 명령어를 사용합니다.

sudo systemctl status nginx

Nginx 구성 파일 구조

  • 주 구성 파일: /etc/nginx/nginx.conf
  • 사용자 정의 사이트 구성: /etc/nginx/conf.d/ 디렉토리
  • 기본 사이트 구성: /etc/nginx/conf.d/default.conf
  • 웹사이트 파일 기본 디렉토리: /usr/share/nginx/html

URL 리디렉션 설정 방법

방법 1: 일시적 리디렉션 (302)

server {
    listen 80;
    server_name 예제.com;

    # 전체 사이트를 새로운 도메인으로 일시적으로 리디렉션
    return 302 https://새사이트.com$uri;
}

방법 2: 영구적 리디렉션 (301)

server {
    listen 80;
    server_name 이전도메인.com;

    # 새로운 도메인으로 영구적으로 리디렉션
    return 301 https://새도메인.com$uri;
}

방법 3: 특정 경로 리디렉션

server {
    listen 80;
    server_name 예제.com;

    # /이전페이지를 /새페이지로 리디렉션
    location /이전페이지 {
        return 301 https://예제.com/새페이지;
    }

    # /블로그 디렉토리를 새로운 블로그 주소로 리디렉션
    location /블로그 {
        return 301 https://블로그.예제.com$uri;
    }
}

방법 4: HTTP에서 HTTPS로 리디렉션

server {
    listen 80;
    server_name 예제.com www.예제.com;

    # 모든 HTTP 요청을 HTTPS로 리디렉션
    return 301 https://$host$uri;
}

server {
    listen 443 ssl;
    server_name 예제.com www.예제.com;

    # SSL 설정...
    ssl_certificate /경로/로/인증서.crt;
    ssl_certificate_key /경로/로/개인키.key;

    # 웹사이트 일반 설정
    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

방법 5: www와 비www 간 리디렉션

# www를 비www로 리디렉션
server {
    listen 80;
    server_name www.예제.com;
    return 301 https://예제.com$uri;
}

server {
    listen 80;
    server_name 예제.com;
    # 일반 설정...
}

# 비www를 www로 리디렉션
server {
    listen 80;
    server_name 예제.com;
    return 301 https://www.예제.com$uri;
}

server {
    listen 80;
    server_name www.예제.com;
    # 일반 설정...
}

방법 6: rewrite 규칙 활용

server {
    listen 80;
    server_name 예제.com;

    # URL 패턴 재작성
    rewrite ^/유저/([0-9]+)/?$ /프로필.php?id=$1 permanent;

    # 특정 조건에 따라 재작성
    if ($host = "이전.예제.com") {
        rewrite ^ https://새.예제.com$uri permanent;
    }
}

완벽한 구성 예제

server {
    listen 80;
    server_name 이전사이트.com www.이전사이트.com;

    # 전체 사이트를 새 도메인으로 영구 리디렉션
    return 301 https://새사이트.com$uri;
}

server {
    listen 80;
    server_name 예제.com;

    # HTTP를 HTTPS로 리디렉션
    return 301 https://$host$uri;
}

server {
    listen 443 ssl;
    server_name 예제.com;

    ssl_certificate /etc/nginx/ssl/예제.com.crt;
    ssl_certificate_key /etc/nginx/ssl/예제.com.key;

    # 특정 경로 리디렉션
    location /이전소개 {
        return 301 https://예제.com/소개;
    }

    location /상품/이전상품 {
        return 301 https://예제.com/상품/새상품;
    }

    # 정규 표현식을 사용한 리디렉션
    location ~* ^/카테고리/(.*)$ {
        return 301 https://예제.com/상점/$1;
    }

    # 일반 웹사이트 설정
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }
}

구성 관리 단계

  1. 원래 구성 백업하기:
    sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup
    
  2. 구성 파일 편집:
    sudo vi /etc/nginx/conf.d/default.conf
    # 또는
    sudo nano /etc/nginx/conf.d/default.conf
    
  3. 구성 문법 검사:
    sudo nginx -t
    
  4. 변경사항 적용:
    sudo systemctl reload nginx
    # 또는
    sudo nginx -s reload
    

일반적인 디버깅 명령어

# Nginx 구성 문법 검사
sudo nginx -t

# 구성 변경 후 서비스 재로드 (서비스 중단 없음)
sudo systemctl reload nginx

# Nginx 오류 로그 보기
sudo tail -f /var/log/nginx/error.log

# 접속 로그 확인
sudo tail -f /var/log/nginx/access.log

# Nginx 서비스 상태 확인
sudo systemctl status nginx

주의사항

  • 301 (영구 리디렉션): 브라우저가 캐싱하며 영구 변경에 적합
  • 302 (임시 리디렉션): 브라우저가 캐싱하지 않으며 임시 유지보수에 적합
  • 구성 변경 전 반드시 백업하세요
  • 변경 후 반드시 nginx -t로 문법 검사하세요
  • reload를 사용해 서비스 중단 없이 구성 변경을 적용하세요

태그: nginx CentOS web-server

7월 14일 17:36에 게시됨