Cook Server

Rocky 리눅스에 nginx 설치 및 설정

앤써니킴 2025. 5. 27. 21:18
728x90

Nginx 공식 저장소를 사용하여 최신 안정(Stable) 버전을 설치하는 것을 기준으로 설명합니다.

1단계: 시스템 업데이트 

먼저, 패키지 목록과 시스템을 최신 상태로 업데이트합니다.

sudo dnf update -y

2단계: Nginx 공식 저장소 설정 getRepository

Rocky Linux의 기본 저장소에도 Nginx가 포함되어 있을 수 있지만, 최신 버전을 사용하려면 Nginx 공식 저장소를 추가하는 것이 좋습니다.

  1. Nginx 저장소 파일 생성
    vinano 같은 텍스트 편집기를 사용하여 /etc/yum.repos.d/nginx.repo 파일을 생성합니다.

    sudo vi /etc/yum.repos.d/nginx.repo
  2. 저장소 내용 추가
    다음 내용을 파일에 붙여넣습니다. 이 설정은 Nginx 안정(Stable) 버전을 사용하도록 합니다. ($releasever는 Rocky Linux 버전에 맞게 자동으로 대체됩니다.)

    [nginx-stable]
    name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
  3. 파일 저장 및 종료
    • vi: Esc 누르고 :wq 입력 후 Enter.
    • nano: Ctrl + X 누르고 Y 누르고 Enter.
  4. (선택 사항) 기본 Nginx 모듈 비활성화:
    만약 Rocky Linux의 기본 저장소에 nginx 모듈이 있고, Nginx 공식 저장소 버전과 충돌할 가능성이 있다면, 다음 명령어로 기본 모듈을 비활성화하는 것이 좋습니다.

    sudo dnf module disable nginx -y

3단계: Nginx 설치 

이제 Nginx 저장소가 준비되었으므로, dnf를 사용하여 Nginx를 설치합니다.

sudo dnf install nginx -y

 

설치가 완료되면 Nginx가 시스템에 설치됩니다.


4단계: Nginx 서비스 시작 및 활성화 

Nginx를 설치한 후에는 서비스를 시작하고, 시스템 부팅 시 자동으로 시작되도록 활성화해야 합니다.

  1. Nginx 시작

    sudo systemctl start nginx

  2. Nginx 부팅 시 자동 시작 활성화

    sudo systemctl enable nginx

  3. Nginx 상태 확인

    서비스가 정상적으로 실행 중인지 확인합니다.출력 결과에서 Active: active (running) 이라는 메시지가 보이면 성공적으로 실행된 것입니다.

    sudo systemctl status nginx

5단계: 방화벽 설정 

Rocky Linux는 기본적으로 firewalld 방화벽을 사용합니다. 웹 서버인 Nginx에 외부에서 접근할 수 있도록 HTTP(80번 포트)와 HTTPS(443번 포트)를 허용해야 합니다.

  1. HTTP 허용

    sudo firewall-cmd --permanent --add-service=http

  2. HTTPS 허용 (SSL/TLS 사용할 경우)

    sudo firewall-cmd --permanent --add-service=https

  3. 방화벽 설정 다시 로드

    변경된 설정을 적용합니다.

    sudo firewall-cmd --reload

6단계: 설치 확인 

모든 설정이 완료되었습니다. 이제 웹 브라우저를 열고 주소창에 서버의 IP 주소를 입력하여 Nginx 환영 페이지가 나타나는지 확인합니다.

  • 서버의 IP 주소 확인 방법:
      ip a

웹 브라우저에서 http://<서버_IP_주소> 로 접속했을 때 "Welcome to nginx!" 페이지가 보이면 성공적으로 설치 및 설정된 것입니다.


7단계: 도메인 셋팅 (lets.ai.kr)

가정

  • Nginx가 이미 설치되어 있고 실행 중입니다.
  • lets.ai.kr 도메인의 DNS A 레코드가 이 서버의 공인 IP 주소를 가리키고 있습니다.
  • 웹사이트 파일은 /var/www/lets.ai.kr/html 디렉토리에 위치할 예정입니다. (이 경로는 필요에 따라 변경할 수 있습니다.)

웹사이트 디렉토리 생성 및 기본 페이지 추가

먼저 lets.ai.kr 도메인을 위한 파일을 저장할 디렉토리를 만들고, Nginx가 접근할 수 있도록 권한을 설정합니다. 테스트를 위해 간단한 index.html 파일도 생성합니다.

  1. 디렉토리 생성

    sudo mkdir -p /var/www/lets.ai.kr/html

  2. 권한 설정

    Nginx 프로세스(보통 nginx 사용자)가 이 디렉토리를 읽을 수 있도록 소유권을 변경합니다.
    • (SELinux 사용 시): 만약 SELinux가 활성화되어 있다면, 웹 콘텐츠 컨텍스트를 설정해야 할 수도 있습니다.
        sudo chcon -t httpd_sys_content_t /var/www/lets.ai.kr -R

      sudo chown -R nginx:nginx /var/www/lets.ai.kr
  3. 테스트용 index.html 생성

    sudo echo "<h1>Welcome to lets.ai.kr</h1>" > /var/www/lets.ai.kr/html/index.html

Nginx 설정 파일 생성

Rocky Linux에서는 /etc/nginx/conf.d/ 디렉토리에 .conf 확장자를 가진 파일을 만들면 Nginx가 자동으로 로드합니다. 각 도메인마다 별도의 설정 파일을 만드는 것이 좋습니다.

sudo vi /etc/nginx/conf.d/lets.ai.kr.conf

서버 블록(Server Block) 설정 추가

위에서 생성한 lets.ai.kr.conf 파일에 다음 내용을 입력합니다. 이 설정은 HTTP (80번 포트) 요청을 처리합니다.

server {
    # 80번 포트에서 IPv4 및 IPv6 요청 수신
    listen 80;
    listen [::]:80;

    # 이 서버 블록이 처리할 도메인 이름 지정
    # www.lets.ai.kr 로 접속해도 처리하도록 추가
    server_name lets.ai.kr www.lets.ai.kr;

    # 웹사이트 파일이 있는 루트 디렉토리 지정
    root /var/www/lets.ai.kr/html;

    # 기본으로 보여줄 파일 지정
    index index.html index.htm;

    # 모든 요청에 대한 기본 처리 방식
    location / {
        # 요청된 파일($uri)이나 디렉토리($uri/)가 있으면 보여주고, 없으면 404 오류 반환
        try_files $uri $uri/ =404;
    }

    # 접근 로그와 오류 로그 파일 경로 지정 (선택 사항이지만 권장)
    access_log /var/log/nginx/lets.ai.kr.access.log;
    error_log /var/log/nginx/lets.ai.kr.error.log;
}


파일을 저장하고 종료합니다.


Nginx 설정 테스트

새로운 설정을 적용하기 전에, 문법적인 오류가 없는지 반드시 테스트합니다.

sudo nginx -t


다음과 같은 메시지가 나오면 성공입니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


만약 오류가 발생하면, 오류 메시지에 나온 파일과 줄 번호를 참고하여 lets.ai.kr.conf 파일을 수정하십시오.


Nginx 재시작

설정 테스트가 성공적으로 완료되면, Nginx를 재시작하여 변경된 설정을 적용합니다.

sudo systemctl restart nginx

웹브라우저 확인

이제 웹 브라우저에서 http://lets.ai.kr 또는 http://www.lets.ai.kr 로 접속하여 "Welcome to lets.ai.kr" 메시지가 보이는지 확인합니다.


⭐️ 최종 단계: HTTPS 설정 (강력 권장)

현재 설정은 HTTP(80번 포트)만 처리합니다. 보안을 위해 반드시 HTTPS(443번 포트)를 설정하는 것이 좋습니다.
Let's Encrypt를 사용하면 무료로 SSL/TLS 인증서를 발급받고 HTTPS를 설정할 수 있습니다.


Certbot
도구를 사용하면 Let's Encrypt 인증서 발급과 Nginx HTTPS 설정(HTTP를 HTTPS로 자동 리디렉션 포함)을 쉽게 자동화할 수 있습니다.


Certbot 설치 및 실행

  1. Certbot 설치
    sudo dnf install certbot python3-certbot-nginx -y

  2. Certbot 실행 (Nginx 플러그인 사용)
    sudo certbot --nginx -d lets.ai.kr -d www.lets.ai.kr

Certbot의 안내에 따라 이메일 주소를 입력하고 약관에 동의하면, 인증서 발급 및 Nginx 설정 업데이트가 자동으로 진행됩니다. Certbot은 위에서 만든 lets.ai.kr.conf 파일을 수정하여 HTTPS 설정을 추가하고, HTTP 요청을 HTTPS로 리디렉션하는 설정도 추가해 줍니다.

Certbot 설치시 오류 해결

만약 
Error: Unable to find a match: certbot python3-certbot-nginx 오류가 발생한다면,  dnf 패키지 관리자가 현재 설정된 저장소에서 certbot python3-certbot-nginx 패키지를 찾을 수 없다는 의미입니다. 이는 Rocky Linux의 기본 저장소에는 이 패키지들이 포함되어 있지 않기 때문입니다. Certbot을 설치하려면 보통 EPEL(Extra Packages for Enterprise Linux) 저장소를 추가해줍니다.

  1. EPEL 저장소 설치
          
    sudo dnf install epel-release -y

  2. DNF 캐시 업데이트 (선택 사항이지만 권장)

    sudo dnf clean all sudo dnf makecache

  3. Certbot 및 Nginx 플러그인 설치 (재시도)

    이제 EPEL 저장소가 추가되었으므로, 다시 설치를 시도합니다.이제 패키지를 찾아서 설치가 진행되어야 합니다.

    sudo dnf install certbot python3-certbot-nginx -y
728x90