Varnish Cache + NGINX 리버스 프록시는 어떻게 작동합니까?
게시 됨: 2022-08-09이 기사에서는 Varnish 캐시 NGINX 역 프록시와 설정 방법에 대해 설명합니다.
HTTP 캐싱에 중점을 둔 프록시 서버는 Varnish입니다. HTTP 가속기로 만들어졌으며 Apache 또는 NGINX 웹 서버에 대한 역방향 프록시로 작동할 수 있습니다. 트래픽이 많고 눈에 잘 띄는 웹 사이트는 Varnish를 구현했습니다.
목차
바니시 캐시란 무엇입니까?
웹 기반 회사의 경우 캐시는 종종 소프트웨어의 가장 중요한 부분입니다. Varnish Cache는 이름이 의미하는 바를 정확히 수행하는 강력한 오픈 소스 HTTP 엔진/역 HTTP 프록시입니다. 방문자가 웹 페이지를 처음 볼 때 웹 페이지 사본을 캐시(또는 저장)합니다. 이렇게 하면 웹 사이트 속도가 최대 1000%까지 빨라질 수 있습니다. Varnish는 페이지를 캐시하기 위해 서버에 단일 요청을 수행한 후 동일한 페이지에 대한 후속 요청을 처리합니다. 그 결과 엄청나게 빠른 콘텐츠 전달과 백엔드 서버 리소스에 대한 수요가 줄어듭니다.
- Varnish의 핵심 역량은 속도와 성능입니다.
- 서버 인프라 절약
- 확장성 - Varnish를 사용하면 방문자 또는 요청의 양에 관계없이 사이트가 수요를 충족할 수 있습니다.
- 정전으로부터 보호: Varnish는 서버가 충돌하더라도 캐시된 정보를 계속 제공합니다.
- 유연성: VCL(Varnish Configuration Language)을 사용하면 특수 솔루션, 규칙 및 모듈을 생성할 수 있습니다.
- 향상된 사용자 경험
바니시 캐시는 어떻게 작동합니까?
웹 서버의 백엔드에 도달하기 전에 Varnish는 들어오는 모든 요청을 처리합니다. 캐시는 모든 웹 트래픽을 처리하고 기본적으로 2분마다 새로 고칩니다.
Varnish는 요청이 캐시되지 않은 경우 일반 역 프록시 단락에서 본 것처럼 요청을 웹 서버의 백엔드로 라우팅하고 결과를 캐시합니다.
요청이 캐시되면 메모리에 저장된 다음 신속하게 검색하여 고객에게 보낼 수 있습니다. Varnish는 VCL 언어를 사용하여 설정, 캐싱 정책 및 기타 규칙(Varnish 구성 언어)을 표현합니다.
이 언어와 그 변형을 사용하여 각 요청에 다르게 응답할 수 있습니다. 예를 들어 특정 요청을 특정 백엔드로 보내거나 Varnish가 들어오는 요청 또는 그 결과의 특성에 따라 다른 조치를 취하도록 지시할 수 있습니다.
또 다른 놀라운 Varnish 기능인 백엔드 폴링이라는 내장 기능으로 인해 웹 서버를 사용할 수 없는 경우에도 캐시된 자료가 계속 제공될 수 있습니다. Varnish는 다운타임을 감지하는 경우 유예 시간으로 알려진 시간 프레임 동안 캐시된 콘텐츠를 계속 제공합니다. 백엔드 폴링은 유연하게 설정할 수 있는 빈도로 서버를 쿼리합니다.
Nginx는 무엇입니까?
NGINX는 비디오 스트리밍, 캐싱, 역방향 프록시, 웹 서비스 및 기타 기능에 사용할 수 있는 오픈 소스 소프트웨어입니다. 그것은 원래 최고의 속도와 신뢰성을 위해 구축된 웹 서버로 시작되었습니다. NGINX는 HTTP 서버 역할 외에도 HTTP 서버, 이메일 프록시 서버(IMAP, POP3, SMTP), 역방향 프록시, HTTP, TCP, UDP 서버용 로드 밸런서로 작동할 수 있습니다.
리버스 프록시란 무엇입니까?
역방향 프록시의 주요 기능은 들어오는 트래픽으로부터 웹 서버를 보호하는 것입니다. 각 연결 요청은 요청을 처리한 서버에 연결하기 전에 많은 서버를 통해 전달하는 역방향 프록시에 의해 수신됩니다.
각 역방향 프록시 작업에는 세 가지 주요 단계가 있습니다.
- 연결 요청 수집: 네트워크 에지에서 역방향 프록시는 들어오는 요청을 수락합니다.
- TCP 3방향 핸드셰이크: TCP 3방향 핸드셰이크 후에 역방향 프록시에 대한 연결이 생성되고 첫 번째 연결이 닫힙니다.
- 원본 서버 연결: 가상의 IP 주소를 사용하여 역방향 프록시는 원본 서버를 클라이언트 요청에 연결합니다.
웹 앱에 대한 모든 웹 브라우저 연결은 항상 역방향 프록시를 통해 이루어지기 때문에 사용자는 원본 서버에 직접 연결할 수 없습니다.
Varnish 캐시 Nginx 리버스 프록시를 어떻게 설정할 수 있습니까?
서버에 Nginx 설치
우선 apt
명령을 사용하여 Ubuntu 저장소에서 Nginx를 설치해야 합니다.
sudo apt update apt install nginx -y
설치가 완료되면 systemctl
명령을 사용하여 시스템 부팅 시마다 Nginx를 시작하고 활성화해야 합니다.
systemctl start nginx systemctl enable nginx
포트 88에서 Nginx 구성
우리는 작동을 위해 비 전통적인 HTTP 포트 8080을 사용하도록 Nginx를 설정할 것입니다. 이렇게 하려면 "sites-available" 디렉터리에 있는 가상 호스트 파일을 수정해야 합니다.
nano /etc/nginx/sites-available/default
'listen' 줄 값을 8080으로 변경합니다. 저장하고 종료합니다.
지금 바로 Nginx 설정을 테스트하여 오류를 확인하십시오. 그 후 서비스를 다시 시작하십시오.
nginx -t systemctl restart nginx
netstat
를 사용하여 Nginx를 다시 한 번 확인하고 기존의 HTTP 포트 8080에서 작동하는지 확인합니다.
netstat -plntu
설치되었으며 포트 8080은 현재 Nginx 웹 서버에서 사용 중입니다.
Ubuntu에 Varnish 설치
apt
명령을 사용하여 varnish를 설치해야 합니다.
sudo apt install varnish -y
아래 나열된 systemctl
명령을 사용하여 varnish를 시작하고 시스템 부팅 시 자동으로 시작하도록 설정합니다.
systemctl start varnish systemctl enable varnish
기본적으로 varnish는 관리 웹 인터페이스에 포트 6082를 사용하고 공개 액세스에 포트 6081을 사용합니다. netstat
명령을 사용하여 특정 포트가 나열되어 있는지 확인하십시오.
netstat -plntu
Varnish HTTP 가속기가 설치되었습니다.
Varnish를 Nginx의 역방향 프록시로 구성
Nginx 웹 서버의 역방향 프록시로 Varnish가 사용됩니다. Nginx 웹 서버는 HTTP 포트 8080에서 작동하고 Varnish는 HTTP 포트 80에서 작동합니다.
이 단계에서는 Nginx용 Varnish를 설정하고 백엔드 서버를 식별하며 Varnish를 수정하여 HTTP 포트 80을 기본 포트로 사용합니다.
varnish 구성 디렉토리로 바로 이동하여 "default.vcl" 파일을 편집하십시오. 호스트가 127.0.0.1이고 포트가 8080인지 확인하십시오.
nano /etc/varnish/default.vcl
백엔드 구성이 완료되었습니다.
다음 단계는 HTTP 포트 80을 사용하도록 Varnish를 설정하는 것입니다. '/etc/default' 디렉토리의 'varnish' 디렉토리로 이동하여 varnish 구성 파일을 편집합니다.
nano /etc/default/varnish
기본 포트가 6081이고 HTTP 포트가 80인지 확인하십시오.
이제 '/lib/systemd/system' 디렉토리에 있는 varnish 서비스 파일을 편집해야 합니다. systemd 시스템 디렉토리로 이동하여 varnish.service 파일을 편집합니다.
cd /lib/systemd/system nano varnish.service
'ExecStart' 줄에서 HTTP 포트 80을 바니시 포트 6081로 바꿉니다.
이제 systemd
구성을 다시로드하고 varnish를 다시 시작하십시오.
systemctl daemon-reload systemctl restart varnish
netstat
명령을 사용하여 바니시 확인
netstat -plntu
Nginx에 대한 역방향 프록시로 varnish 구성이 완료되었습니다.
UFW 방화벽 구성
Ubuntu 운영 체제에서 사람이 읽을 수 있는 기본 방화벽을 "UFW"라고 합니다. 패키지가 아직 없는 경우 아래에 표시된 apt 명령을 사용하여 설치합니다.
sudo apt install ufw
방화벽을 켜고 새로운 SSH, HTTP 및 HTTPS 포트를 엽니다.
아래 나열된 ufw 명령.
ufw allow ssh ufw allow http ufw allow https
이제 방화벽을 켜고 부팅 시 항상 시작되도록 합니다.
ufw enable
이제 UFW 방화벽이 활성화되었으므로 외부 네트워크에서 HTTP 및 HTTPS 포트에 연결할 수 있습니다.