DevOps 환경에서 정적 웹사이트를 배포하는 방법은 점점 더 간편해지고 있습니다. 특히 AWS(Amazon Web Services)와 Nginx를 활용하면 효율적으로 정적 웹사이트를 호스팅할 수 있습니다. 하지만 이 과정에서 여러 가지 문제에 직면할 수 있습니다. 이번 포스팅에서는 AWS에서 Nginx를 통한 정적 웹사이트 배포의 문제와 그 해결법에 대해 알아보겠습니다.

AWS EC2 인스턴스 설정

AWS에서 Nginx를 사용하여 정적 웹사이트를 호스팅하기 위해서는 먼저 EC2 인스턴스를 설정해야 합니다. 다음은 EC2 인스턴스를 생성하는 기본적인 단계입니다.

  1. AWS Management Console에 로그인합니다.
  2. EC2 대시보드로 이동하여 인스턴스 시작을 클릭합니다.
  3. 원하는 AMI(Amazon Machine Image)를 선택합니다. 예를 들어, Ubuntu Server를 선택할 수 있습니다.
  4. 인스턴스 유형을 선택하고, 필요한 경우 추가 설정을 합니다.
  5. 키 페어를 생성하거나 기존 키 페어를 선택하여 인스턴스를 시작합니다.
  6. Nginx 설치

    인스턴스에 SSH로 접속한 후 Nginx를 설치합니다.

    sudo apt update
    sudo apt install nginx

    Nginx가 성공적으로 설치되면, 다음 명령어로 Nginx 상태를 확인할 수 있습니다.

    sudo systemctl status nginx

    정적 웹사이트 파일 준비

    정적 웹사이트 파일을 준비합니다. HTML, CSS, JavaScript 파일을 포함한 폴더를 생성하고, 이를 /var/www/html 디렉토리로 복사합니다.

    sudo mkdir -p /var/www/html/mywebsite
    sudo cp -r /path/to/your/website/* /var/www/html/mywebsite/

    이제 Nginx가 이 파일을 제공할 수 있도록 설정해야 합니다.

    Nginx 설정

    Nginx의 기본 설정 파일을 수정하여 정적 파일을 제공할 수 있도록 합니다.

    sudo nano /etc/nginx/sites-available/default

    기본 설정을 다음과 같이 수정합니다.

    server {
        listen 80;
        server_name your_domain.com;  # 도메인 이름 또는 서버 IP
    
        location / {
            root /var/www/html/mywebsite;  # 웹사이트 파일 경로
            index index.html;  # 기본 인덱스 파일
            try_files $uri $uri/ =404;  # 요청 파일이 없을 경우 404
        }
    }

    설정을 저장한 후, Nginx를 다시 시작합니다.

    sudo systemctl restart nginx

    문제 해결

  7. 방화벽 설정: Nginx가 제공하는 포트(기본적으로 80번 포트)가 열려 있는지 확인해야 합니다. AWS 보안 그룹에서 HTTP 포트가 허용되어야 합니다.
  8. 도메인 연결 문제: 도메인을 사용하고 있다면 DNS 설정이 올바르게 되어 있는지 확인합니다. 도메인이 AWS EC2 인스턴스의 공인 IP 주소를 가리키고 있어야 합니다.
  9. 404 오류: Nginx 설정에서 try_files 지시어가 올바르게 설정되어 있는지 확인하고, 웹사이트 파일이 올바른 경로에 위치해 있는지 점검합니다.
  10. 퍼미션 문제: /var/www/html/mywebsite 디렉토리의 권한이 올바르게 설정되어 있는지 확인합니다. Nginx가 파일에 접근할 수 있는 권한이 필요합니다.
sudo chown -R www-data:www-data /var/www/html/mywebsite
sudo chmod -R 755 /var/www/html/mywebsite

마무리

AWS에서 Nginx를 통해 정적 웹사이트를 배포하는 과정은 비교적 간단하지만, 다양한 문제에 직면할 수 있습니다. 위에서 설명한 단계와 해결책을 통해 이러한 문제를 사전에 예방하고, 효과적으로 웹사이트를 배포할 수 있습니다. Nginx는 성능이 뛰어나고 다양한 설정을 통해 유연하게 대응할 수 있는 웹 서버이므로, 이를 활용하여 효율적인 웹사이트 운영을 기대할 수 있습니다.