웹사이트 검색

CentOS/RHEL 8에 Nginx용 Varnish Cache 6을 설치하는 방법


Varnish 캐시(일반적으로 Varnish라고 함)는 현대적인 아키텍처와 유연성을 갖춘 강력하고 빠른 오픈 소스 역방향 프록시 HTTP 가속기입니다. 구성 언어. 역방향 프록시라는 것은 단순히 Nginx와 같은 웹 서버(원본 서버 또는 백엔드) 앞에 배포하여 클라이언트의 HTTP 요청을 수신하고 이를 서버로 전달할 수 있는 소프트웨어를 의미합니다. 처리를 위한 원본 서버입니다. 그리고 원본 서버의 응답을 클라이언트로 전달합니다.

VarnishNginx클라이언트 사이의 중개자 역할을 하지만 몇 가지 성능 이점을 제공합니다. 주요 목적은 캐싱 엔진으로 작동하여 애플리케이션을 더 빠르게 로드하는 것입니다. 클라이언트로부터 요청을 수신하고 이를 백엔드로 한 번 전달하여 요청된 콘텐츠를 캐시합니다(파일 및 파일 조각을 메모리에 저장). 그러면 정확히 유사한 콘텐츠에 대한 향후 모든 요청이 캐시에서 제공됩니다.

Varnish는 Nginx가 스토리지 디스크의 파일을 처리하는 대신 메모리의 콘텐츠를 제공하므로 웹 애플리케이션 로드 속도가 빨라지고 웹 서버의 전체 성능이 간접적으로 향상됩니다.

캐싱 외에도 Varnish에는 HTTP 요청 라우터, 로드 밸런서, 웹 애플리케이션 방화벽 등을 포함한 여러 다른 사용 사례도 있습니다.

varnish는 수신 요청이 어떻게 처리되어야 하는지에 대한 정책을 작성할 수 있게 해주는 확장성이 뛰어난 내장 Varnish 구성 언어(VCL)를 사용하여 구성됩니다. 처리. 이를 사용하여 맞춤형 솔루션, 규칙 및 모듈을 구축할 수 있습니다.

이 문서에서는 새로운 CentOS 8 또는 Nginx 웹 서버와 Varnish Cache 6를 설치하는 단계를 살펴보겠습니다. RHEL 8 서버. RHEL 8 사용자는 Redhat 구독을 활성화해야 합니다.

Nginx 웹 서버만 설치하는 대신 전체 LEMP 스택을 설정하려면 다음 가이드를 확인하세요.

  1. CentOS 8에 LEMP 서버를 설치하는 방법
  2. RHEL 8에 LEMP 서버를 설치하는 방법

1단계: CentOS/RHEL 8에 Nginx 웹 서버 설치

1. CentOS/RHEL 8은 최신 버전의 Nginx 웹 서버 소프트웨어와 함께 제공되므로 다음을 사용하여 기본 저장소에서 설치합니다. dnf 명령을 따르십시오.

dnf update
dnf install nginx

2. Nginx가 설치되면 다음 systemctl 명령을 사용하여 시작, 활성화 및 상태를 확인해야 합니다.

systemctl start nginx
systemctl enable nginx
systemctl status nginx

3. 조금 궁금하다면 다음 ss 명령을 사용하여 기본적으로 포트 80에서 실행되는 Nginx TCP 소켓을 확인할 수도 있습니다.

ss -tpln

4. 시스템에서 방화벽을 실행 중인 경우 웹 서버에 대한 요청을 허용하도록 방화벽 규칙을 업데이트해야 합니다.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

2단계: CentOS/RHEL 8에 Varnish Cache 6 설치

5. CentOS/RHEL 8은 기본적으로 6.0 버전이 포함된 Varnish Cache DNF 모듈을 제공합니다. LTS(장기 지원).

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

dnf module install varnish

6. 모듈 설치가 완료되면 시스템에 설치된 Varnish 버전을 확인할 수 있습니다.

varnishd -V

7. Varnish Cache를 설치한 후 /usr/sbin/varnishd에 설치된 주요 실행 명령과 varnish 구성 파일은 에 있습니다. /etc/varnish/.

/etc/varnish/default.vcl 파일은 VCL을 사용하여 작성된 기본 광택 구성 파일이고 /etc/varnish/secret은 광택입니다. 비밀 파일.

8. 그런 다음 Varnish 서비스를 시작하고 시스템 부팅 중에 자동 시작되도록 활성화한 후 실행 중인지 확인합니다.

systemctl start varnish
systemctl enable varnish
systemctl status varnish

3단계: Varnish 캐시와 함께 작동하도록 Nginx 구성

9. 이 섹션에서는 Nginx 앞에서 실행되도록 Varnish Cache를 구성하는 방법을 보여줍니다. 기본적으로 Nginx는 80 포트에서 수신 대기하며 일반적으로 모든 서버 블록(또는 가상 호스트)은 이 포트에서 수신하도록 구성됩니다.

예를 들어 기본 구성 파일(/etc/nginx/nginx.conf)에 구성된 기본 nginx 서버 블록을 살펴보세요.

vi /etc/nginx/nginx.conf

다음 스크린샷에 표시된 것처럼 서버 블록 섹션을 찾으세요.

10. Nginx 앞에서 Varnish를 실행하려면 기본 Nginx 포트를 80에서 로 변경해야 합니다. >8080(또는 원하는 다른 포트).

Varnish/etc/nginx/conf.d/ 아래에 생성됨)에서 이 작업을 수행해야 합니다. >.

예를 들어 테스트 사이트 tecmint.lan의 서버 블록은 /etc/nginx/conf.d/tecmint.lan.conf이며 다음 구성을 갖습니다.

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

중요: 표시된 대로 /etc/nginx/nginx.conf 파일의 구성 섹션을 주석 처리하여 기본 서버 블록을 비활성화해야 합니다. 다음 스크린샷에서. 이를 통해 서버에서 다른 웹사이트/응용 프로그램 실행을 시작할 수 있습니다. 그렇지 않으면 Nginx는 항상 요청을 기본 서버 블록으로 보냅니다.

11. 구성이 완료되면 구성 파일에 오류가 있는지 확인하고 Nginx 서비스를 다시 시작하여 최근 변경 사항을 적용합니다.

nginx -t
systemctl restart nginx

12. 다음으로 클라이언트로부터 HTTP 요청을 수신하려면 Varnish가 포트 80에서 실행되도록 구성해야 합니다. Varnish 환경 파일(현재는 더 이상 사용되지 않음)에서 이러한 변경이 이루어진 이전 버전의 Varnish Cache와 달리 버전 6.0 이상에서는 .

Varnish 서비스 파일에서 필요한 변경을 수행해야 합니다. 다음 명령을 실행하여 편집할 적절한 서비스 파일을 엽니다.

systemctl edit --full  varnish

다음 줄을 찾아 수신 주소와 포트를 지정하는 -a 스위치의 값을 변경합니다. 다음 스크린샷과 같이 포트를 80으로 설정합니다.

주소를 지정하지 않으면 varnishd는 서버에서 활성화된 사용 가능한 모든 IPv4IPv6 인터페이스를 수신합니다.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

파일의 변경 사항을 저장하고 종료합니다.

13. 다음으로 Varnish가 콘텐츠를 가져오기 위해 방문할 백엔드 서버를 정의해야 합니다. 이는 Varnish 기본 구성 파일에서 수행됩니다.

vi /etc/varnish/default.vcl 

기본 백엔드 구성 섹션을 찾아 "default" 문자열을 server1(또는 원본 서버를 나타내기 위해 선택한 이름)으로 변경합니다. 그런 다음 포트를 8080(또는 서버 블록에 정의한 Nginx 수신 대기 포트)으로 설정하세요.

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}

이 가이드에서는 동일한 서버에서 VarnishNginx를 실행하고 있습니다. Nginx 웹 서버가 다른 호스트에서 실행 중인 경우. 예를 들어 주소가 10.42.0.247인 다른 서버의 경우 .host 매개변수를 그림과 같이 설정합니다.

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

파일을 저장하고 닫습니다.

14. 다음으로 Varnish 서비스 파일의 최근 변경 사항으로 인해 systemd 관리자 구성을 다시 로드한 후 다음과 같이 Varnish 서비스를 다시 시작하여 변경 사항을 적용해야 합니다.

systemctl daemon-reload
systemctl restart varnish

15. 이제 NginxVarnish가 구성된 TCP 소켓을 수신하고 있는지 확인하세요.

ss -tpln

4단계: Nginx Varnish 캐시 설정 테스트

16. 다음으로, 다음과 같이 Varnish Cache를 통해 웹페이지가 제공되고 있는지 확인합니다. 다음 스크린샷에 표시된 대로 웹 브라우저를 열고 서버 IP 또는 FDQN을 사용하여 탐색합니다.

http://www.tecmin.lan
OR
http://10.42.0.144

17. 또는 표시된 대로 컬 명령을 사용합니다. 서버의 IP 주소 또는 웹 사이트의 FQDN을 사용하거나 로컬에서 테스트하는 경우 127.0.0.1 또는 localhost를 사용하십시오.

curl -I http:///www.tecmint.lan

유용한 바니시 캐시 관리 유틸리티

18. 이 마지막 섹션에서는 Varnish Cache와 함께 제공되며 varnishd를 제어하는 데 사용할 수 있는 몇 가지 유용한 유틸리티 프로그램에 대해 간략하게 설명합니다. >, 메모리 내 로그 및 전체 통계 등에 액세스하세요.

바니샤드

varnishadm 실행 중인 Varnish 인스턴스를 제어하는 유틸리티입니다. varnishd에 대한 CLI 연결을 설정합니다. 예를 들어 다음 스크린샷에 표시된 것처럼 구성된 백엔드를 나열하는 데 사용할 수 있습니다(자세한 내용은 man varnishadm 참조).

varnishadm
varnish> backend.list

광택 로그

varnishlog 유틸리티는 요청별 데이터에 대한 액세스를 제공합니다. 특정 클라이언트 및 요청에 대한 정보를 제공합니다(자세한 내용은 man varnishlog 참조).

varnishlog

광택제

varnishstats라고도 하는 varnishstat는 캐시 적중 및 누락과 같은 메모리 내 통계, 저장소에 대한 정보에 대한 액세스를 제공하여 Varnish의 현재 성능을 한눈에 볼 수 있게 해줍니다. , 생성된 스레드, 삭제된 객체(자세한 내용은 man varnishstat 참조).

varnishstat 

바니시탑

varnishtop 유틸리티는 공유 메모리 로그를 읽고 가장 일반적으로 발생하는 로그 항목의 지속적으로 업데이트되는 목록을 제공합니다(자세한 내용은 man varnishtop 참조).

varnishtop 

광택제

varnishhist (varnish 히스토리) 유틸리티는 varnish 로그를 구문 분석하고 처리에 따른 마지막 n 요청의 분포를 보여주는 지속적으로 업데이트되는 히스토그램을 출력합니다( 자세한 내용은 man varnishhist를 읽어보세요).

varnishhist

그게 다야! 이 가이드에서는 Varnish Cache를 설치하고 이를 Nginx HTTP 서버 앞에서 실행하여 CentOS/RHEL 8<에서 웹 콘텐츠 전달을 가속화하는 방법을 보여주었습니다. /강하게>.

이 가이드에 대한 생각이나 질문이 있으면 아래 피드백 양식을 사용하여 공유할 수 있습니다. 자세한 내용은 Varnish Cache 설명서를 참조하세요.

Varnish Cache의 주요 단점은 HTTPS에 대한 기본 지원이 부족하다는 것입니다. 웹사이트/애플리케이션에서 HTTPS를 활성화하려면 사이트를 보호하기 위해 Varnish Cache와 함께 작동하도록 SSL/TLS 종료 프록시를 구성해야 합니다. 다음 기사에서는 CentOS/RHEL 8에서 Hitch를 사용하여 Varnish Cache에 대해 HTTPS를 활성화하는 방법을 보여드리겠습니다.