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 |