Varnish Cache란 무엇인가? | Varnish 설치 및 기본 설정하기

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

Varnish Cache는 동적 웹사이트와 API에 적합한 HTTP 가속기입니다. 이는 스퀴드와 같은 클라이언트 사이드 캐시 역할을 하는 다른 웹 가속기와 달리 Nginx, 아파치와 같은 원본 서버 대신 HTTP 가속기로 설계 되었습니다.

또한, Varnish는 HTTP에 특화되어 있어 FTP, SMTP 및 다른 통신 프로토콜을 지원하는 프록시 서버와는 다릅니다.

✅ Varnish Cache 설치

~]# dnf -y install varnish
Last metadata expiration check: 2:14:30 ago on Thu 01 Aug 2024 11:39:12 AM UTC.
Dependencies resolved.
======================================================================================================================
 Package                  Architecture            Version                            Repository                  Size
======================================================================================================================
Installing:
 varnish                  x86_64                  6.6.2-4.el9_3.1                    appstream                  1.1 M

Transaction Summary
======================================================================================================================
Install  1 Package

Total download size: 1.1 M
Installed size: 3.6 M
Downloading Packages:
varnish-6.6.2-4.el9_3.1.x86_64.rpm                                                    4.0 MB/s | 1.1 MB     00:00
----------------------------------------------------------------------------------------------------------------------
Total                                                                                 1.1 MB/s | 1.1 MB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                              1/1
  Running scriptlet: varnish-6.6.2-4.el9_3.1.x86_64                                                               1/1
  Installing       : varnish-6.6.2-4.el9_3.1.x86_64                                                               1/1
  Running scriptlet: varnish-6.6.2-4.el9_3.1.x86_64                                                               1/1
  Verifying        : varnish-6.6.2-4.el9_3.1.x86_64                                                               1/1

Installed:
  varnish-6.6.2-4.el9_3.1.x86_64

Complete!
~]# varnishd -V
varnishd (varnish-6.6.2 revision 17c51b08e037fc8533fb3687a042a867235fc72f)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software
~]# systemctl start varnish
~]# systemctl enable varnish
Created symlink /etc/systemd/system/multi-user.target.wants/varnish.service → /usr/lib/systemd/system/varnish.service.

✅ Varnish Cache 구성

ExecStart로 시작하는 줄을 포트 6081에서 포트 80으로 변경한 다음 파일을 저장하고 닫습니다. 완료되면 줄이 다음과 같아야 합니다.

~]# vi /etc/varnish/default.vcl

backend default { .host = "127.0.0.1"; .port = "8080"; }
# 6081  80으로 변경
~]# vi /lib/systemd/system/varnish.service
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
ExecReload=/usr/sbin/varnishreload


## 기존에 사용하던 HTTP 포트 번호는 8080으로 변경해 줍니다.##
~]# vi /etc/httpd/conf/httpd.conf
Listen 8080
~]# vi /etc/httpd/conf.d/virtual.conf
<VirtualHost *:8080>
    ServerName ...
## 
~]# systemctl daemon-reload
~]# systemctl restart varnish
[root@ip-172-26-6-43 yum.repos.d]#

✅ Varnish 설치 확인

바니쉬 캐시 설치가 완료 되었습니다. 정상적으로 작동하는지 확인 해 봅니다.

~]# curl -I http://mydomain.com
HTTP/1.1 301 Moved Permanently
Date: Thu, 01 Aug 2024 15:36:16 GMT
Server: Apache/2.4.57 (AlmaLinux) OpenSSL/3.0.7
Location: https://mydomain.com/
Content-Length: 228
Content-Type: text/html; charset=iso-8859-1
X-Varnish: 32772
Age: 0
Via: 1.1 varnish (Varnish/6.6)
Connection: keep-alive
  • ~]# curl -I http://mydomain.com
  • HTTP/1.1 301 Moved Permanently: 요청이 영구적으로 이동했음을 의미합니다. HTTP에서 HTTPS로 리디렉션되었음
  • Location https://mydomain.com: 클라이언트가 요청한 URL이 https://tozisin.com/으로 이동 되었음.
  • X-Varnish: 32772: Varnish가 요청을 처리한 ID(요청이 성공적으로 처리됨)
  • Age: 0: Varnish 캐시에서 이 응답이 생성된 지 얼마나 시간이 지났는지를 나타내며, 0은 방금 생성됨을 의미
  • Via: 1.1 varnish (Varnish/6.6): 요청이 Varnish를 통해 처리되었음.
  • Connection: keep-alive: 연결이 계속 유지된다는 것을 나타냄.
Varnish Cache 로고

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • VirtualBox 복제 후 CentOS 7 네트워크 인터페이스 중복 문제 해결

    VirtualBox에 CentOS 7을 설치 후 복제 기능을 이용해서 CentOS 7을 복제 했습니다. 여기서 네트워크 인터페이스 중복 문제가 발생하여, 이 내용에 대해 확인해 봤습니다. ✅ 네트워크 인터페이스 중복 기존에 설정했던 고정 IP에 접속 후 nmtui로 서버에 접속해 보니 기존 서버에 있던 enp0s3 설정이 유선 연결 1로 변경된 것으로 확인되었습니다. 원인은 VirtualBox 복제 시 네트워크…

  • PHP-FPM이란 | PHP-FPM 설치 및 설정

    PHP-FPM을 시작하기 전에 CGI에 대해 알아야 합니다. CGI(Common Gateway Interface)는 웹 서버와 외부 프로그램 사이의 상호작용을 위한 표준 프로토콜이며, 웹 서버는 사용자 요청에 따라 동적으로 콘텐츠를 생성하거나 데이터를 처리할 수 있습니다. 요청이 들어올 때 마다 각각의 요청으로 CGI가 생성되게 되어 서버의 속도는 느려질 수 밖에 없습니다. CGI(Common Gateway Interface)의 업그레이드 버전으로 서버의 성능을…

  • 리눅스 pwd 명령어 & realpath 명령어 | 절대 경로 위치 확인

    ✅ pwd 명령어 pwd 명령어는 Print Working directory의 약자로 현재 작업 디렉토리의 위치를 보여주는 명령어로 현재 사용자가 접속한 절대 경로를 표시합니다. 🔲 명령어 옵션 pwd 명령어는 간단한 명령어로 옵션은 2가지만 존재합니다. ✅ realpath 명령어 realpath 명령어는 실제 경로를 절대 경로로 보여주는 명령어로, 심볼릭 링크의 실제 경로를 확인할 때 함께 사용합니다.

  • df 명령어

    df(Disk Free)는 마운트 된 장치 전체 용량, 사용 용량, 여유 용량을 확인할 수 있습니다. 파일 시스템(Filesystem), 디스크 크기(Size), 사용량(Used), 여유공간(Avail), 사용률(Use%), 마운트지점(Mounted on)을 순서로 확인할 수 있습니다. df 명령어 옵션 웹사이트 접속이 안되는 오류 발생 시 디스크 용량을 확인해서 서버 관리를 하는 것이 기본적인 활용법이며, 파티션 용량이 가득 찼을 경우 웹사이트가 접속 되지…

  • 리눅스 패키지(Linux Packag)란 무엇인가?

    리눅스 패키지(Linux Packag)를 윈도우와 비교하자면, 윈도우의 인스톨러 파일(.msi, .exe)는 소프트웨어를 설치하는 데 사용되며, 리눅스에서는 비슷한 개념으로 패키지 관리자를 이용하여 소프트웨어를 설치합니다. 리눅스 패키지는 실행파일, 라이브러리, 설정 파일 등을 하나의 패키지로 묶어 제공하며, 패키지 관리자를 통해 해당 패키지를 다운로드하고 시스템에 설치합니다. 윈도우의 인스톨러와 유사하게, 리눅스는 패키지 관리자를 통해 사용자가 소프트웨어를 쉽게 설치, 업데이트, 삭제할…

  • 리눅스 서버 시간 동기화: timedatectl(CentOS7 이상)

    리눅스에서 날짜 및 시간 설정이 필요한 이유는 서버 운영 중 시간이 잘못되면, 입력되는 DB데이터, 로그 데이터, 웹 서버에 접속한 기록 등의 시간이 맞지 않는 경우가 발생할 수 있기 때문입니다. 리눅스 서버 시간 동기화를 사용하는데 있어 OS는 두 개의 시계를 가지고 있습니다.시스템 시계(소프트웨어 시계), 하드웨어 시계(실시간 시계, BIOS 시계)입니다. ✅ 리눅스 서버 시간 동기화:…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 0   +   6   =