Varnish Cache (보통 Varnish라고 불립니다)은 현대적인 아키텍처와 유연한 구성 언어를 갖춘 오픈 소스이자 강력하고 빠른 리버스 프록시 HTTP 가속기입니다. 리버스 프록시로서의 역할을 하는 것은 간단히 말해 웹 서버(즉, 오리진 서버 또는 백엔드)인 Nginx 앞에 배포할 수 있는 소프트웨어로, 클라이언트의 HTTP 요청을 받아서 오리진 서버로 전달하여 처리된 응답을 클라이언트에게 전달하는 것입니다.
Varnish는 Nginx와 클라이언트 사이의 중간 역할을 하지만 일부 성능상 이점이 있습니다. 주요 목적은 캐싱 엔진으로 작동하여 애플리케이션의 로딩 속도를 높이는 것입니다. 클라이언트로부터 요청을 받아 백엔드로 전달하여 요청된 내용을 캐시(파일 및 파일 조각을 메모리에 저장)합니다. 그런 다음 정확히 동일한 내용에 대한 모든 미래의 요청은 캐시에서 제공됩니다.
이로써 웹 애플리케이션의 로딩 속도를 높이고, Varnish가 메모리에서 콘텐츠를 제공하기 때문에 Nginx가 저장 디스크에서 파일을 처리하는 것보다 웹 서버의 전반적인 성능을 간접적으로 향상시킵니다.
캐싱 외에도 Varnish는 HTTP 요청 라우터, 로드 밸런서, 웹 애플리케이션 방화벽 등 여러 다른 사용 사례를 갖고 있습니다.
바니시는 내장된 매우 확장 가능한 바니시 구성 언어 (VCL)을 사용하여 수신 요청을 처리하는 방법에 대한 정책을 작성할 수 있습니다. 사용자 정의 솔루션, 규칙 및 모듈을 만들 수 있습니다.
본 문서에서는 Nginx 웹 서버 및 Varnish Cache 6를 새로운 CentOS 8 또는 RHEL 8 서버에 설치하는 단계를 안내합니다. RHEL 8 사용자는 레드햇 구독을 활성화해야 합니다.
LEMP 스택을 완전히 설정하려면 Nginx 웹 서버만 설치하는 대신 다음 가이드를 확인하세요.
단계 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. 조금이나마 궁금하다면 기본적으로 80번 포트에서 실행되는 Nginx TCP 소켓을 다음과 같은 ss 명령어를 사용하여 확인할 수도 있습니다.
# 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을 사용하여 작성된 주 varnish 구성 파일이며 /etc/varnish/secret는 varnish 시크릿 파일입니다.
8. 그 다음, Varnish 서비스를 시작하고 시스템 부팅시 자동 시작으로 설정한 후 정상적으로 실행 중인지 확인합니다.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

단계 3: Nginx를 Varnish Cache와 함께 사용하도록 구성하기
9. 이 섹션에서는 Varnish Cache를 Nginx 앞에서 실행하도록 구성하는 방법을 보여줍니다. 기본적으로 Nginx는 포트 80에서 수신 대기하며, 일반적으로 각 서버 블록(또는 가상 호스트)은 이 포트에서 수신 대기하도록 구성됩니다.
예를 들어, 주 구성 파일(/etc/nginx/nginx.conf)에 구성된 기본 nginx 서버 블록을 살펴보세요.
# vi /etc/nginx/nginx.conf
다음 스크린샷에서 보여지는 서버 블록 섹션을 찾아보세요.

10. Varnish를 Nginx 앞에서 실행하려면 기본 Nginx 포트를 80에서 8080(또는 기타 선택한 포트)로 변경해야 합니다.
이 작업은 일반적으로 /etc/nginx/conf.d/에 생성되는 모든 서버 블록 구성 파일(일반적으로 Varnish를 통해 제공하려는 사이트나 웹 응용 프로그램)에 대해 수행되어야 합니다.
예를 들어, 테스트 사이트 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 { } }

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

11. 구성이 완료되면 구성 파일에서 오류를 확인하고 최근 변경 사항을 적용하기 위해 Nginx 서비스를 다시 시작하세요.
# nginx -t # systemctl restart nginx

12. 그 다음, 클라이언트로부터 HTTP 요청을 받으려면 Varnish를 포트 80에서 실행하도록 구성해야 합니다. 이전 버전의 Varnish Cache와는 달리 이 변경 사항은 이제 사용되지 않는 Varnish 환경 파일에서가 아니라 버전 6.0 이상에서 필요한 변경을 Varnish 서비스 파일에서 수행해야 합니다.
적절한 서비스 파일을 편집하려면 다음 명령을 실행하세요.
# systemctl edit --full varnish
다음 라인을 찾아서 -a
스위치의 값을 변경하고, 리스닝 주소와 포트를 지정하십시오. 포트를 스크린샷에 표시된 대로 80으로 설정하십시오.
주소를 지정하지 않으면, varnishd는 서버에서 활성화된 모든 IPv4 및 IPv6 인터페이스에서 수신 대기합니다.
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"; }

본 안내서에서는 동일한 서버에서 Varnish와 Nginx를 실행하고 있습니다. Nginx 웹 서버가 다른 호스트에서 실행 중인 경우, 예를 들어 주소가 10.42.0.247인 다른 서버에서 실행 중인 경우, .host
매개변수를 설정하십시오.
backend server1 { .host = "10.42.0.247"; .port = "8080"; }
파일을 저장하고 닫으십시오.
14. 최근 Varnish 서비스 파일의 변경으로 인해 시스템디 서비스 관리자 구성을 다시로드하고, 변경 사항을 적용하기 위해 Varnish 서비스를 다시 시작해야 합니다.
# systemctl daemon-reload # systemctl restart varnish
15. 이제 Nginx와 Varnish가 구성된 TCP 소켓에서 수신 대기하는지 확인하십시오.
# ss -tpln

단계 4: Nginx Varnish 캐시 설정 테스트
16. 다음으로, 웹 페이지가 다음과 같이 Varnish Cache를 통해 제공되는지 확인합니다. 웹 브라우저를 열고 다음 스크린샷에 표시된대로 서버 IP 또는 FDQN을 사용하여 탐색합니다.
http://www.tecmin.lan OR http://10.42.0.144

17. 또는 다음과 같이 curl 명령을 사용합니다. 서버의 IP 주소 또는 웹 사이트의 FQDN을 사용하거나 로컬에서 테스트하는 경우 127.0.0.1 또는 localhost를 사용합니다.
# curl -I http:///www.tecmint.lan

유용한 Varnish Cache 관리 유틸리티
18. 이 마지막 섹션에서는 Varnish Cache가 함께 제공하는 유용한 유틸리티 프로그램 중 일부를 간단히 설명하겠습니다. 이를 사용하여 varnishd를 제어하고 인메모리 로그 및 전반적인 통계를 확인할 수 있습니다.
varnishadm
varnishadm 실행 중인 Varnish 인스턴스를 제어하는 유틸리티입니다. varnishd에 대한 CLI 연결을 설정합니다. 예를 들어, 다음 스크린샷에 표시된대로 구성된 백엔드를 나열하는 데 사용할 수 있습니다 (man varnishadm에서 자세한 정보를 확인하세요).
# varnishadm varnish> backend.list

varnishlog
varnishlog 유틸리티는 요청별 데이터에 액세스할 수 있습니다. 특정 클라이언트 및 요청에 대한 정보를 제공합니다 (man varnishlog에서 자세한 정보를 확인하세요).
# varnishlog

varnishstat
A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).
# varnishstat

varnishtop
A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).
# varnishtop

varnishhist
A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).
# varnishhist

그게 다야! 이 안내서에서는 웹 콘텐츠 전달을 가속화하기 위해 Varnish Cache를 설치하고 Nginx HTTP 서버 앞에서 실행하는 방법을 보여주었습니다. CentOS/RHEL 8에서 실행됩니다.
이 안내서에 대한 생각이나 질문은 아래의 피드백 양식을 사용하여 공유할 수 있습니다. 더 많은 정보는 Varnish Cache 문서를 참조하십시오.
Varnish Cache의 주요 단점은 HTTPS의 네이티브 지원 부족입니다. 웹 사이트/애플리케이션에 HTTPS를 활성화하려면 SSL/TLS 종료 프록시를 구성하여 Varnish Cache와 함께 작동하도록하여 사이트를 보호해야 합니다. 다음 글에서는 Hitch를 사용하여 Varnish Cache에 HTTPS를 활성화하는 방법을 보여드리겠습니다. CentOS/RHEL 8에서.
Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/