Debian 12, 11 또는 10에 Nginx를 설치하는 방법

Nginx는 고성능과 낮은 리소스 소비로 유명한 강력한 웹 서버입니다. 원래 C10k 문제를 처리하도록 설계되었으며 정적 콘텐츠, 로드 밸런싱 및 역방향 프록시 제공에 탁월합니다. 안정성과 보안으로 유명한 Debian과 Nginx를 결합하면 강력하고 안정적인 서버 환경이 만들어집니다.

Nginx의 주요 기능:

  • 고성능: 여러 동시 연결을 효율적으로 처리합니다.
  • 낮은 자원 사용량: 최소한의 메모리와 CPU로 실행되도록 최적화되었습니다.
  • 로드 밸런싱: 성능 향상을 위해 여러 서버에 트래픽을 분산합니다.
  • 역방향 프록싱: 클라이언트 요청을 백엔드 서버로 원활하게 전달합니다.
  • 정적 콘텐츠 처리: 정적 파일을 빠르고 효율적으로 제공합니다.
  • 보안 기능: 암호화된 통신을 위해 SSL/TLS를 지원합니다.
  • 유연성: HTTP, HTTPS, SMTP, POP3 및 IMAP과 같은 프로토콜을 지원합니다.

Nginx와 Debian을 결합하면 얻을 수 있는 이점:

  • 안정: 안정성에 대한 데비안의 명성은 서버의 안정성을 보장합니다.
  • 보안: 데비안의 강력한 보안 조치는 Nginx 서버를 취약성으로부터 보호합니다.
  • 사용의 용이성: 데비안의 패키지 관리 시스템은 Nginx 설치 및 유지 관리를 단순화합니다.
  • 커뮤니티 지원: Nginx와 Debian은 광범위한 리소스와 지원을 제공하는 강력한 커뮤니티를 보유하고 있습니다.

설정으로 전환하면 Debian의 안정성이 Nginx의 효율성과 완벽하게 짝을 이루어 웹 애플리케이션에 이상적인 환경을 조성한다는 것을 알게 될 것입니다. Debian 서버에 Nginx를 설치하고 구성하는 데 필요한 단계를 살펴보겠습니다.

Nginx 설치 전 시스템 준비

Nginx를 설치하기 전에 시스템이 업데이트되었는지 확인하세요. 이렇게 하면 설치 중 발생할 수 있는 충돌을 방지하고 호환성 문제 및 보안 취약성의 위험을 줄일 수 있습니다.

시스템 패키지를 업데이트하려면 다음을 실행하세요.

sudo apt update && sudo apt upgrade

이 명령은 사용 가능한 업데이트 목록을 가져옵니다(다음을 통해). apt update) 그런 다음 현재 소프트웨어 패키지를 최신 버전으로 업그레이드합니다(다음을 사용). apt upgrade).

NGINX '웹서버' 표준 설치

기본적으로 NGINX는 Debian 저장소에서 사용할 수 있습니다. 이렇게 하면 설치 과정이 간단해집니다.

nginx를 설치하려면 다음 명령을 실행하십시오.

sudo apt install nginx

그만큼 apt install 명령은 APT 패키지 처리 유틸리티(Debian 시스템의 일부)에게 NGINX 패키지를 설치하도록 지시합니다.

선택 사항: NGINX-전체 버전 설치

NGINX는 nginx-full 표준 버전에는 없는 추가 모듈이 포함된 버전입니다. 더 많은 기능이 필요하면 nginx-full 버전을 설치하세요.

sudo apt install nginx-full

선택 사항: NGINX-Extras 버전 설치

더욱 광범위한 기능 세트를 얻으려면 다음을 고려하십시오. nginx-extras 버전. 설치하기 위해서:

sudo apt install nginx-extras

NGINX 설치 확인

설치 후 NGINX가 올바르게 실행되고 있는지 확인하세요.

다음을 통해 NGINX 서비스 상태를 확인하세요.

systemctl status nginx

출력에 "활성(실행 중)"이 표시되면 NGINX가 올바르게 작동합니다. 그렇지 않은 경우 출력에는 문제 해결을 위한 오류가 자세히 설명됩니다.

NGINX가 활성화되지 않은 경우 다음을 사용하세요.

sudo systemctl enable nginx --now

Nginx에 대한 UFW 방화벽 구성

UFW(Uncomplicated Firewall)는 iptables 방화벽 규칙을 관리하기 위한 사용하기 쉬운 인터페이스를 제공합니다. 기본적으로 Debian에는 설치되어 있지 않지만 기본 리포지토리에서 가져올 수 있습니다. 서버에 공개 액세스가 있는 경우 보안을 위해 UFW 규칙을 설정해야 합니다.

UFW 방화벽 설치

UFW가 아직 시스템에 설치되어 있지 않다면 다음 명령을 실행하여 설치할 수 있습니다:

sudo apt install ufw

UFW 방화벽 활성화

설치가 완료되면 다음 명령을 실행하여 UFW를 활성화할 수 있습니다:

sudo ufw enable

UFW의 기본 설정은 들어오는 모든 연결을 차단하고 나가는 모든 연결을 허용합니다. 즉, 원치 않는 시스템 액세스는 차단하지만 시스템은 외부 세계에 연결할 수 있습니다.

설치된 애플리케이션 나열

UFW는 특정 응용 프로그램에 대한 규칙 집합인 응용 프로그램 프로필을 사용합니다. UFW 프로필이 있는 설치된 애플리케이션을 보려면 다음을 실행하세요.

sudo ufw app list

NGINX용 UFW 규칙 구성

필요에 따라 HTTP(포트 80), HTTPS(포트 443) 또는 둘 다를 통해 NGINX 연결을 허용하도록 UFW를 구성할 수 있습니다.

HTTP(포트 80)에만 해당:

sudo ufw allow 'Nginx HTTP'

HTTPS(포트 443)만 해당:

sudo ufw allow 'Nginx HTTPS'

HTTP와 HTTPS 모두:

sudo ufw allow 'Nginx Full'

방화벽 규칙 확인

규칙이 적용되었는지 확인하려면 활성 방화벽 규칙을 확인하세요.

sudo ufw status

NGINX 구성 테스트

UFW를 설정한 후 NGINX 랜딩 페이지가 보이는지 확인하세요. 브라우저에서 서버의 IP 주소로 이동합니다.

http://your_server_ip

또는 로컬 설정의 경우:

http://localhost

NGINX 기본 페이지가 표시된다고 가정해 보겠습니다. 구성이 작동합니다. 이것으로 Debian에서 NGINX에 대한 방화벽 설정이 종료됩니다.

NGINX 서버 블록 생성

Apache의 가상 호스트와 마찬가지로 NGINX 서버 블록을 사용하면 하나의 서버에서 여러 도메인을 호스팅할 수 있습니다. 각 도메인에는 구성 설정이 있습니다. 이 가이드에서는 "example.com"을 실제 도메인 이름으로 바꾸세요.

도메인용 디렉터리 만들기

도메인에 대한 디렉터리를 설정합니다. 이 디렉토리는 귀하의 웹사이트 파일을 저장합니다:

sudo mkdir -p /var/www/example.com/

Nginx 디렉터리에 소유권 할당

NGINX가 일반적으로 사용하는 "www-data" 사용자 및 그룹에 디렉터리 소유권을 할당합니다.

sudo chown -R www-data:www-data /var/www/example.com/

Nginx 테스트 HTML 페이지 만들기

NGINX 설정을 확인하려면 도메인 디렉터리에 테스트 HTML 페이지를 만듭니다.

sudo nano /var/www/example.com/index.html

다음 HTML 코드를 추가합니다.

<html>
 <head>
  <title>Welcome to Example.com</title>
 </head>
 <body>
   <h1>Success! The NGINX server block is working!</h1>
 </body>
</html>

코드를 nano 편집기에 붙여넣은 후 Ctrl+O를 눌러 변경 사항을 저장한 다음 Ctrl+X를 눌러 편집기를 종료하세요.

테스트 페이지용 NGINX 서버 블록 생성

귀하의 웹사이트에 대한 서버 블록을 설정하십시오:

sudo nano /etc/nginx/sites-available/example.com.conf

다음 구성을 추가합니다.

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

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

 server_name example.com www.example.com;

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

이 구성은 NGINX에게 두 포트 모두에 대해 포트 80에서 들어오는 연결을 수신하도록 지시합니다. example.com 그리고 www.example.com. 반드시 교체하세요. root 지시문을 이전에 생성한 디렉터리 경로로 바꿉니다.

심볼릭 링크를 통해 NGINX 서버 블록 활성화

사이트 사용 가능 디렉토리에서 사이트 활성화 디렉토리로의 심볼릭 링크를 생성하여 서버 블록을 활성화합니다.

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

최종 구성 및 테스트 실행

마지막으로 기본 NGINX 구성 파일을 편집하고 테스트 실행을 수행하여 모든 것이 예상대로 작동하는지 확인합니다.

NGINX 구성 파일 편집

열기 nginx.conf 파일:

sudo nano /etc/nginx/nginx.conf

줄을 찾아보세요 server_names_hash_bucket_size 64;http {} 차단하고 주석을 해제하세요.

이 지시문을 사용하면 NGINX가 이러한 목적으로 더 많은 메모리를 할당하여 긴 도메인 이름과 더 많은 수의 서버 이름을 처리할 수 있습니다. 하지만 이 값을 너무 높게 설정하면 필요한 것보다 더 많은 메모리를 소비할 수 있으므로 주의하세요.

CTRL+O 및 CTRL+X를 눌러 변경 사항을 저장하고 편집기를 종료합니다.

NGINX 구성 테스트

NGINX를 다시 시작하기 전에 구성 구문이 올바른지 확인하는 것이 좋습니다. 테스트 실행을 시작하려면 다음 명령을 실행하십시오.

sudo nginx -t

구성이 올바른 경우 다음 출력이 표시됩니다.

nginx: 구성 파일 /etc/nginx/nginx.conf 구문이 정상입니다. nginx: 구성 파일 /etc/nginx/nginx.conf 테스트가 성공했습니다.

이 메시지는 NGINX 구성이 성공적으로 검증되었음을 나타냅니다.

서버 블록 확인

서버 차단 기능이 제대로 작동하는지 확인하려면 웹 브라우저에서 도메인을 여세요. 서버 블록이 활성화되었음을 확인하는 테스트 페이지가 표시됩니다.

추가 Nginx 명령

웹 서버의 파일 보안 강화

웹 서버의 파일과 폴더에 대한 보안이 가장 중요합니다. 지나치게 허용적인 액세스 권한을 피하세요. 웹루트의 모든 파일과 디렉터리에 대한 올바른 권한을 설정하려면 다음 명령을 사용하세요.

교체하는 것을 기억하세요 /var/www/example.com/ 웹루트 경로로:

sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;

이 명령은 소유자의 디렉터리에 대한 읽기 및 실행 권한과 파일에 대한 읽기-쓰기 권한을 설정합니다. 그룹 및 기타 사용자에게는 읽기 전용 액세스 권한이 부여됩니다. 애플리케이션 요구에 따라 이러한 권한을 조정하십시오.

무료 SSL 인증서를 암호화하는 Nginx 보안

HTTPS 프로토콜을 사용하면 웹 서버 보안이 보장됩니다. Let's Encrypt는 무료 SSL 인증서를 제공합니다. 다음을 사용하여 certbot 패키지를 설치합니다.

sudo apt install python3-certbot-nginx

그런 다음 인증서 생성을 시작합니다.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

귀하의 이메일 및 도메인 이름으로 바꾸십시오. 이 명령은 필수 보안 기능으로 HTTPS를 설정합니다.

자동 인증서 갱신 설정

90일간 지속되는 인증서를 암호화해 보겠습니다. Certbot 스크립트를 사용하여 자동 갱신을 설정하세요. 프로세스를 테스트합니다.

sudo certbot renew --dry-run

성공하면 crontab에 갱신 명령을 추가하십시오.

sudo crontab -e

매일 자정에 갱신하려면 다음 줄을 포함하세요.

00 00 */1 * * /usr/sbin/certbot-auto renew

Nginx 서버 로그

잘 관리되는 웹 서버에 대한 서버 로그를 모니터링하세요. 기본적으로 로그는 다음 위치에 있습니다. /var/log/nginx. 다음과 같이 나열하십시오.

cd /var/log/nginx && ls -l

가장 관련성이 높은 로그 파일은 다음과 같습니다. access.log 그리고 error.log. 실시간으로 로그를 모니터링하려면 tail -f 명령 뒤에 로그 경로가 옵니다:

tail -f /var/log/nginx/access.log

Nginx 업데이트

Nginx 서버를 업데이트하기 전에 현재 구성의 백업을 만드는 것이 좋습니다. 메인을 백업하려면 nginx.conf 파일에서 다음 명령을 사용하십시오.

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Nginx 설정을 광범위하게 사용자 정의한 경우 전체 Nginx 디렉터리를 백업할 수 있습니다.

sudo cp -r /etc/nginx/ /etc/nginx-bkup

구성이 안전하게 백업되었으면 이제 Nginx 업데이트를 진행할 수 있습니다.

sudo apt update
sudo apt upgrade

특히 복잡한 설정에서는 구성을 정기적으로 백업하는 것이 좋습니다.

Nginx 제거

서버에 더 이상 Nginx가 필요하지 않은 경우 다음 단계에 따라 제거할 수 있습니다. 먼저 Nginx 서비스가 중지되었는지 확인합니다.

sudo systemctl disable nginx --now

다음으로 Nginx 패키지를 완전히 제거합니다.

sudo apt remove nginx

Nginx 구성의 나머지 부분을 여전히 찾을 수 있습니다. /etc/nginx 예배 규칙서. 이를 제거하려면 다음 명령을 사용하십시오.

sudo rm -R /etc/nginx/

이렇게 하면 모든 사용자 정의 구성 파일이 제거되므로 이 단계를 진행하기 전에 필요한 모든 것을 백업했는지 확인하십시오.

Nginx에서 로그 회전 매개변수 구성

Nginx에는 기본적으로 일일 로그 회전 기능이 포함되어 있습니다. 그러나 필요에 따라 이러한 설정을 사용자 정의할 수 있습니다.

로그 순환을 위한 액세스 구성 파일

로그 회전 설정을 수정하려면 구성 파일에 액세스해야 합니다. nano 텍스트 편집기를 사용하여 여는 방법은 다음과 같습니다.

sudo nano /etc/nginx/logrotate.d/nginx

파일을 열면 다음과 같은 내용을 볼 수 있습니다. 주로 Fail2ban과 같은 모니터링 도구를 사용하는 경우 로그 보존 및 순환 요구 사항에 맞게 이 파일의 지시어를 조정합니다.

샘플 로그 순환 구성 파일

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

기본 구성 매개변수 이해

이 구성 내에서 시스템 관리자는 일반적으로 다음 두 가지 주요 설정에 중점을 둡니다.

  1. 일일: 로그 회전 빈도를 설정하는 설정입니다. 기본값은 '매일'이지만 '매주' 또는 '매월'로 변경할 수 있습니다. 그러나 일일 순환은 일반적으로 로그 관리를 단순화합니다.
  2. 14 회전: 이 숫자는 시스템에 보관할 로그 파일 수를 알려줍니다. 예를 들어 '14'로 설정하면 14개의 최신 로그가 유지됩니다. 일주일 동안만 로그를 저장하려면 이 숫자를 '7'로 조정하세요.

Nginx를 사용하면 다른 설정을 수정할 수 있지만 항상 주의해서 변경하세요. 영향을 이해하지 못한 채 설정을 변경하면 예상치 못한 결과가 발생할 수 있습니다. 의도하지 않은 문제를 일으키지 않고 필요에 맞게 이러한 설정을 수정했는지 확인하십시오.

로그 관리에 있어서 모든 경우에 적용할 수 있는 일률적인 접근 방식은 없다는 점을 기억하십시오. 변경하기 전에 항상 특정 환경과 요구 사항을 평가하십시오.

마무리 생각

이 가이드에서는 설치, 구성 및 기본 최적화를 다루며 Debian에서 Nginx를 설정하는 방법을 살펴보았습니다. Nginx의 효율성과 Debian의 안정성을 결합하여 웹 서버를 위한 견고한 기반을 구축했습니다. 서버를 최신 상태로 유지하고 향상된 기능을 위해 추가 Nginx 모듈을 살펴보세요. 문제가 발생하면 Debian 및 Nginx를 중심으로 한 강력한 커뮤니티가 항상 훌륭한 리소스가 됩니다. 함께해주셔서 감사합니다. 즐거운 호스팅 되세요!

Joshua James

코멘트를 남겨주세요