Nginx를 Varnish Cache로 CentOS 7에서 속도를 높이는 방법

Varnish Cache (또한 Varnish라고 함)은 웹 서버를 가속화하기 위해 설계된 고성능의 오픈 소스 HTTP 가속기입니다. 이전 글에서는 CentOS 7 및 CentOS 8에서 아파치용 Varnish Cache 설정하는 방법을 설명했습니다.

이 글에서는 Varnish Cache를 Nginx HTTP 서버의 프론트 엔드로 사용하는 방법을 안내하겠습니다. 이 안내서는 CentOS 7에서도 작동해야 합니다. RHEL 7에서도 작동할 것으로 예상됩니다.

요구 사항

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

단계 1: CentOS 7에 Nginx 웹 서버 설치

1. 기본 CentOS 소프트웨어 저장소에서 Nginx HTTP 서버를 YUM 패키지 관리자를 사용하여 다음과 같이 설치합니다.

# yum install nginx
Install Nginx on CentOS 7

2. 설치가 완료되면 일단 Nginx 서비스를 시작하고 시스템 부팅 시 자동으로 시작되도록 설정합니다.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Start and Enable Nginx at Boot

3. 아래의 명령을 사용하여 포트 80에서 들어오는 패킷을 허용하도록 시스템 방화벽 규칙을 수정합니다.

# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --permanent --add-port=8080/tcp
# firewall-cmd --reload
Open Nginx Port on Firewall

단계 2: CentOS 7에 Varnish Cache 설치

4. 이제 최신 버전의 Varnish Cache 6에 대한 미리 컴파일된 RPM 패키지가 있습니다(즉, 작성 시점에서의 6.5), 따라서 공식 Varnish Cache 저장소를 추가해야 합니다.

그 전에, 여러 종속성 패키지를 설치하기 위해 EPEL 저장소를 활성화해야 합니다.

# yum install -y epel-release

5. 다음으로, GPG 서명을 처리하는 pygpgme 패키지와 다양한 방법으로 yum의 기능을 확장하는 유용한 유틸리티 컬렉션인 yum-utils를 설치하세요.

# yum install pygpgme yum-utils

6. 이제 아래와 같은 저장소 구성을 포함하는 /etc/yum.repos.d/varnishcache_varnish5.repo라는 파일을 만드세요.

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

중요: 아래 구성에서 el7을 Linux 배포판과 버전으로 교체하십시오:

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. 이제 아래 명령을 실행하여 로컬 yum 캐시를 업데이트하고 varnish 캐시 패키지를 설치합니다(패키지 설치 중 y 또는 yes를 입력하여 GPG 키를 수락하는 것을 잊지 마세요):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8. Varnish Cache를 설치한 후, 주요 실행 파일은 /usr/sbin/varnishd로 설치되며 varnish 구성 파일은 /etc/varnish/에 있습니다:

  • /etc/varnish/default.vcl – 이것은 주요 varnish 구성 파일로, vanish 구성 언어(VCL)를 사용하여 작성되었습니다.

9. 이제 varnish 서비스를 시작하고 시스템 부팅 중에 자동으로 시작되도록 활성화하고 다음과 같이 상태를 확인하여 정상적으로 실행되고 있는지 확인합니다.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10. Varnish 설치가 성공적으로 수행되었는지 확인하려면 시스템에 설치된 Varnish 실행 파일의 위치와 버전을 확인할 수 있습니다.

$ which varnishd
$ varnishd -V
샘플 출력
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

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

11. 이 단계에서는 Nginx를 Varnish 캐시와 함께 작동하도록 구성해야 합니다. 기본적으로 Nginx는 포트 80에서 듣습니다. Nginx의 기본 포트를 8080으로 변경하여 Varnish 캐싱 뒤에서 실행되도록 해야 합니다.

Nginx 구성 파일 /etc/nginx/nginx.conf을 열고 포트 80을 듣는 줄을 찾아 아래 스크린샷에 표시된 서버 블록과 같이 포트 8080으로 변경합니다.

# vi /etc/nginx/nginx.conf
Configure Nginx Listening Port

참고: 이 작업은 /etc/nginx/conf.d/에 일반적으로 생성되는 모든 서버 블록 구성 파일에서 수행해야 합니다.Varnish를 통해 제공하려는 웹사이트에 대해.

12. 그다음, varnish 서비스 구성 파일을 열고 Varnish가 듣는 포트를 지정하는 매개변수 ExecStart를 찾아 그 값을 6081에서 80으로 변경합니다.

# systemctl edit --full  varnish

라인은 다음과 같이 보여야 합니다.

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

13. 그다음, Nginx를 Varnish 프록시의 백엔드 서버로 설정합니다. /etc/varnish/default.vcl 구성 파일에서.

# vi /etc/varnish/default.vcl 

백엔드 섹션을 찾아 호스트 IP와 포트를 정의하십시오. 아래는 기본 백엔드 구성입니다. 이를 실제 콘텐츠 서버를 가리키도록 설정하십시오.

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

14. 필요한 모든 구성을 수행한 후 Nginx HTTPD와 Varnish 캐시를 다시 시작하여 위의 변경 사항을 적용하십시오.

# systemctl daemon-reload
# systemctl restart nginx
# systemctl restart varnish

단계 4: Nginx에서 Varnish 캐시 테스트

15. 마지막으로 아래의 cURL 명령어를 사용하여 Nginx 서비스에서 Varnish 캐시가 활성화되어 작동하는지 테스트하십시오. HTTP 헤더를 보려면 아래의 샘플 출력을 사용하십시오.

# curl -I http://localhost
샘플 출력
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 06 Jan 2021 09:24:18 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
ETag: "53762af0-12e1"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Accept-Ranges: bytes
Connection: keep-alive

추가 정보는 Varnish Cache Github 저장소에서 찾을 수 있습니다: https://github.com/varnishcache/varnish-cache

본 튜토리얼에서는 CentOS 7에서 Nginx HTTP 서버에 Varnish Cache를 설정하는 방법을 설명했습니다. 추가 쿼리 또는 아이디어를 보내려면 아래의 코멘트 양식을 사용하십시오.

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-7/