웹사이트 검색

Rocky Linux 9에 Nginx를 설치하는 방법


소개

Nginx는 세계에서 가장 인기 있는 웹 서버 중 하나이며 인터넷에서 가장 크고 가장 트래픽이 많은 사이트를 호스팅하는 역할을 합니다. 웹 서버 또는 리버스 프록시로 사용할 수 있는 가벼운 선택입니다.

이 가이드에서는 Rocky Linux 9 서버에 Nginx를 설치하고, 방화벽을 조정하고, Nginx 프로세스를 관리하고, 단일 서버에서 둘 이상의 도메인을 호스팅하기 위한 서버 블록을 설정하는 방법을 검토합니다.

전제 조건

이 가이드를 시작하기 전에 서버에 sudo 권한이 구성된 루트가 아닌 일반 사용자가 있어야 합니다. Rocky Linux 9용 초기 서버 설정 가이드에 따라 일반 사용자 계정을 구성하는 방법을 배울 수 있습니다.

선택적으로 이 자습서의 마지막 단계를 완료하기 전에 도메인 이름을 등록할 수도 있습니다. DigitalOcean으로 도메인 이름을 설정하는 방법에 대해 자세히 알아보려면 DigitalOcean DNS 소개를 참조하십시오.

사용 가능한 계정이 있으면 루트가 아닌 사용자로 로그인하여 시작하십시오.

1단계 – Nginx 설치

Nginx는 Rocky의 기본 리포지토리에서 사용할 수 있으므로 dnf 패키지 관리자를 사용하여 단일 명령으로 설치할 수 있습니다.

dnf installnginx 패키지를 설치합니다.

  1. sudo dnf install nginx

메시지가 표시되면 y를 입력하여 nginx 설치를 확인합니다. 그런 다음 dnf는 서버에 Nginx 및 필요한 모든 종속성을 설치합니다.

설치가 완료되면 다음 명령을 실행하여 웹 서버를 활성화하고 시작합니다.

  1. sudo systemctl enable nginx
  2. sudo systemctl start nginx

이렇게 하면 서버가 재부팅될 때마다 Nginx가 자동으로 다시 시작됩니다. 이제 새 웹 서버가 실행 중이어야 하지만 테스트하기 전에 방화벽 구성을 변경해야 할 수 있습니다.

2단계 – 방화벽 조정

Rocky Linux 9에 대한 초기 서버 설정 가이드의 일부로 firewalld 방화벽을 활성화한 경우 포트에서 실행되는 Nginx 웹 서버에서 외부 연결을 허용하려면 방화벽 설정을 조정해야 합니다. 기본적으로 80입니다.

포트 80에서 HTTP 연결을 영구적으로 활성화하려면 다음 명령을 실행하십시오.

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

http 방화벽 서비스가 올바르게 추가되었는지 확인하려면 다음을 실행할 수 있습니다.

  1. sudo firewall-cmd --permanent --list-all

다음과 같은 출력이 표시됩니다.

Output
public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

변경 사항을 적용하려면 방화벽 서비스를 다시 로드해야 합니다.

  1. sudo firewall-cmd --reload

이제 외부 방문자가 웹 서버에 액세스할 수 있습니다.

3단계 – 웹 서버 확인

이 시점에서 웹 서버가 실행 중이어야 합니다.

systemctl status 명령을 사용하여 서비스가 실행 중인지 확인할 수 있습니다.

  1. systemctl status nginx
Output
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Main PID: 18387 (nginx) Tasks: 3 (limit: 10938) Memory: 2.8M CPU: 43ms CGroup: /system.slice/nginx.service ├─18387 "nginx: master process /usr/sbin/nginx" ├─18388 "nginx: worker process" └─18389 "nginx: worker process"

이 출력에서 확인할 수 있듯이 서비스가 성공적으로 시작되었습니다. 그러나 이를 테스트하는 가장 좋은 방법은 실제로 Nginx에서 페이지를 요청하는 것입니다.

기본 Nginx 랜딩 페이지에 액세스하여 서버의 IP 주소로 이동하여 소프트웨어가 제대로 실행되고 있는지 확인할 수 있습니다. 서버의 IP 주소를 모르는 경우 인터넷의 다른 위치에서 받은 공용 IP 주소를 제공하는 icanhazip.com 도구를 사용하여 찾을 수 있습니다.

  1. curl -4 icanhazip.com

서버의 IP 주소가 있으면 브라우저의 주소 표시줄에 입력하십시오.

http://your_server_ip

기본 Nginx 랜딩 페이지를 받아야 합니다.

이 페이지에 있다면 서버가 올바르게 실행 중이며 관리할 준비가 된 것입니다.

4단계 – Nginx 프로세스 관리

이제 웹 서버를 가동하고 실행했으므로 몇 가지 서비스 관리 명령을 검토해 보겠습니다.

웹 서버를 중지하려면 systemctl stop을 사용합니다.

  1. sudo systemctl stop nginx

중지된 웹 서버를 시작하려면 systemctl start를 사용하십시오.

  1. sudo systemctl start nginx

서비스를 중지했다가 다시 시작하려면 systemctl restart를 사용하세요.

  1. sudo systemctl restart nginx

구성만 변경하는 경우 Nginx는 종종 연결을 끊지 않고 다시 로드할 수 있습니다. 이렇게 하려면 systemctl reload를 사용하세요.

  1. sudo systemctl reload nginx

이 자습서의 앞부분에서 서버가 부팅될 때 Nginx가 자동으로 시작되도록 구성했습니다. systemctl disable을 사용하여 이 동작을 비활성화할 수 있습니다.

  1. sudo systemctl disable nginx

서비스가 부팅 시 시작되도록 다시 활성화하려면 다음을 입력하십시오.

  1. sudo systemctl enable nginx

5단계 – 중요한 Nginx 파일 및 디렉터리에 익숙해지기

이제 Nginx 서비스를 관리하는 방법을 알았으므로 몇 분 동안 몇 가지 중요한 디렉터리와 파일에 익숙해져야 합니다.

콘텐츠

  • /usr/share/nginx/html: 기본적으로 이전에 본 기본 Nginx 페이지로만 구성된 실제 웹 콘텐츠는 /usr/share에서 제공됩니다. /nginx/html 디렉토리. 이것은 Nginx 구성 파일을 변경하여 변경할 수 있습니다.

서버 구성

  • /etc/nginx: Nginx 구성 디렉토리. 모든 Nginx 구성 파일이 여기에 있습니다.
  • /etc/nginx/nginx.conf: 기본 Nginx 구성 파일입니다. 이것은 Nginx 전역 구성을 변경하도록 수정할 수 있습니다.
  • /etc/nginx/conf.d/: 이 디렉토리에는 Nginx 내에서 호스팅되는 웹사이트를 정의할 수 있는 서버 블록 구성 파일이 포함되어 있습니다. 일반적인 접근 방식은 각 웹사이트를 your_domain.conf와 같이 웹사이트의 도메인 이름을 따라 명명된 별도의 파일에 포함하는 것입니다.

서버 로그

  • /var/log/nginx/access.log: 웹 서버에 대한 모든 요청은 Nginx가 다르게 구성되지 않는 한 이 로그 파일에 기록됩니다.
  • /var/log/nginx/error.log: 모든 Nginx 오류가 이 로그에 기록됩니다.

이제 하나 이상의 도메인을 호스트하도록 사이트를 구성할 준비가 되었습니다.

6단계 – 서버 블록 설정(선택 사항)

Nginx 웹 서버를 사용할 때 서버 블록(Apache의 가상 호스트와 유사)을 사용하여 구성 세부 정보를 구성하고 단일 서버에서 둘 이상의 도메인을 호스트할 수 있습니다. Rocky Linux 9에서 서버 블록은 /etc/nginx/conf.d에 있는 .conf 파일에 정의됩니다. your_domain이라는 도메인을 설정하지만 이를 자신의 도메인 이름으로 바꿔야 합니다.

기본적으로 Rocky Linux 9의 Nginx는 /usr/share/nginx/html의 디렉터리 외부에서 문서를 제공하도록 구성되어 있습니다. 이 방법은 단일 사이트에서는 잘 작동하지만 여러 사이트를 호스팅하는 경우에는 관리하기 어려워질 수 있습니다. /usr/share/nginx/html을 수정하는 대신 your_domain 웹 사이트의 /var/www 내에 디렉토리 구조를 만들고 /usr/는 그대로 둡니다. 클라이언트 요청이 다른 사이트와 일치하지 않는 경우 제공될 기본 디렉토리로 share/nginx/html가 있습니다.

-p 플래그를 사용하여 다음과 같이 your_domain에 대한 디렉토리를 생성하여 필요한 상위 디렉토리를 생성합니다.

  1. sudo mkdir -p /var/www/your_domain/html

다음으로 현재 시스템 사용자를 참조해야 하는 $USER 환경 변수를 사용하여 디렉토리 소유권을 할당합니다.

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

이제 샘플 index.html 페이지를 만들어 서버 블록 구성을 테스트합니다. Rocky Linux 9와 함께 제공되는 기본 텍스트 편집기는 vi입니다. vi는 매우 강력한 텍스트 편집기이지만 사용 경험이 부족한 사용자에게는 다소 둔감할 수 있습니다. Rocky Linux 9 서버에서 구성 파일 편집을 용이하게 하기 위해 nano와 같은 사용자 친화적인 편집기를 설치할 수 있습니다.

  1. sudo dnf install nano

다음으로 nano 또는 좋아하는 편집기를 사용하여 샘플 index.html 페이지를 만듭니다.

  1. nano /var/www/your_domain/html/index.html

내부에 다음 샘플 HTML을 추가합니다.

<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

완료되면 파일을 저장하고 닫습니다. nano를 사용하는 경우 CTRL + X를 누른 다음 메시지가 표시되면 Y를 누르고 Enter를 눌러 저장하고 종료할 수 있습니다.

Nginx가 이 콘텐츠를 제공하려면 사용자 지정 웹 루트를 가리키는 지시문이 있는 서버 블록을 생성해야 합니다. /etc/nginx/conf.d/your_domain.conf에서 새 서버 블록을 만듭니다.

  1. sudo nano /etc/nginx/conf.d/your_domain.conf

다음 구성 블록을 붙여넣습니다.

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

root 구성을 새 디렉터리로 업데이트하고 server_name을 도메인 이름으로 업데이트했습니다. 파일을 저장하고 닫습니다.

이제 두 개의 서버 블록이 활성화되고 listenserver_name 지시문을 기반으로 요청에 응답하도록 구성됩니다(Nginx가 이러한 지시문을 처리하는 방법에 대한 자세한 내용은 여기를 참조하세요).

  • your_domain: your_domainwww.your_domain에 대한 요청에 응답합니다.
  • default: 다른 두 블록과 일치하지 않는 포트 80의 모든 요청에 응답합니다.

다음으로 nginx -t를 사용하여 Nginx 파일에 구문 오류가 없는지 테스트합니다.

  1. sudo nginx -t

문제가 없으면 Nginx를 다시 시작하여 변경 사항을 적용합니다.

  1. sudo systemctl restart nginx

브라우저에서 변경 사항을 테스트하려면 Nginx가 /var/www/your_domain 의 콘텐츠를 제공할 수 있도록 서버의 SELinux 보안 컨텍스트를 업데이트해야 합니다. 디렉토리.

chcon 컨텍스트 업데이트를 통해 사용자 지정 문서 루트를 HTTP 콘텐츠로 제공할 수 있습니다.

  1. chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

이제 Nginx가 도메인 이름을 제공해야 합니다. http://your_domain으로 이동하여 이를 테스트할 수 있습니다. 여기서 다음과 같은 내용이 표시되어야 합니다.

결론

이제 웹 서버를 설치했으므로 제공할 콘텐츠 유형과 보다 풍부한 경험을 만드는 데 사용할 기술에 대한 많은 옵션이 있습니다.

Let’s Encrypt를 사용하여 무료 SSL 인증서로 도메인 이름에 HTTPS를 설정하려면 Rocky Linux 9에서 Let’s Encrypt로 Nginx를 보호하는 방법으로 이동해야 합니다.