시스템 업데이트 및 기본 설정
먼저 시스템을 최신 상태로 업데이트합니다.
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;
}
}
구성 관리 단계
- 원래 구성 백업하기:
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup - 구성 파일 편집:
sudo vi /etc/nginx/conf.d/default.conf # 또는 sudo nano /etc/nginx/conf.d/default.conf - 구성 문법 검사:
sudo nginx -t - 변경사항 적용:
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를 사용해 서비스 중단 없이 구성 변경을 적용하세요