니스 캐시 서버를 설정하는 방법-스왑
트래픽이 많은 웹 사이트는 동일한 콘텐츠를 여러 사용자에게 여러 번 제공해야 합니다. 응용 프로그램에 따라 사용자가 웹 페이지를 요청할 때마다 모든 응용 프로그램 논리를 처리하는 데 비용이 많이들 수 있습니다(리소스 사용). 서버 캐싱이 오는 곳 여기,당신은 단지 메모리에 콘텐츠의 임시 복사본을 저장하고 모든 사용자에게이 콘텐츠를 제공 할 수 있습니다.
바니시는 서버 측에서 콘텐츠를 캐시하는 데 유용합니다. 그러나 당신은 또한 파일을 캐시 할 수 있습니다: 사진,문서.
그것은 좋은 소리,하지만 진실은 기본 광택 아무것도하지 않는다,또는 적어도 당신은 소프트웨어의이 작품의 장점을 낭비 할 수 있으며,문서는 도움이되지 않습니다,그래서 당신은이 문서를 작성했습니다,그래서 당신은 니스에서 가장 혜택을 얻을 수 있습니다. 응용 프로그램의 니스 캐시 서버를 구성,테스트 및 배포하는 위치와 방법을 설명하겠습니다.
데모를 위해 다음과 같은 로컬 주소를 가진 앱 및 캐시 서버용 서버 인스턴스가 2 개 있다고 가정해 보겠습니다:
- 앱 서버:192.168.1.2
- 캐시 서버: 192.168.1.3
니스 캐시 서버 설치
이 기사의 목적을 위해,우리는 바니시 4.0 우분투 서버 16.04 를 설치하는 것입니다. 니스를 설치하려면,당신은 단지 실행해야합니다:
sudo apt install varnish
나는 니스 4.0 을 설치하고,지금부터 당신은 2 개의 특정 파일에 특별한주의를 지불한다:/etc/default/varnish
와/etc/varnish/default.vcl
백엔드 구성
당신이해야 할 첫 번째 일은 백엔드를 구성하거나 웹 응용 프로그램이 살 것이다 니스를 지시하는 것입니다:
- 호스트 이름 또는 아이피 주소는 무엇입니까?
- 포트 란 무엇입니까?
/etc/varnish/default.vcl
파일을 업데이트하고 다음 섹션을 찾아야한다고 정의하려면 다음과 같이 예제 목적을 위해 구성됩니다:
backend default { .host = "192.168.1.2"; .port = "8080"; .first_byte_timeout = 60s; .connect_timeout = 300s;}
그것은 192.168.1.2 및 포트 8080 에서 실행중인 응용 프로그램을 듣고 니스를 지시합니다.
바니시 데몬 구성
바니시가 실행되는 위치를 정의해야 할 첫 번째 사항. 우리는 기본 포트 6081 에서 실행 떠날 것입니다. 이 데몬을 포트 80 과 443 에서 실행하는 것은 매우 일반적입니다.
메모리에 관해서는,광택 빈 설치 메모리 256 메가바이트와 함께 실행 됩니다.,그 일부 응용 프로그램에 대 한 충분 한 수 있습니다.,하지만 높은 트래픽 애플 리 케이 션에 대 한,그것은 충분 하지 않을 수 있습니다.,그리고 캐시에 대 한 전용된 서버를 예약 하는 경우 더.
에서 변경할 수 있습니다.:
/etc/default/varnish
다음 섹션을 찾습니다:
DAEMON_OPTS="-a :6081 \-T localhost:6082 \-f /etc/varnish/default.vcl \-S /etc/varnish/secret \-s malloc,256m"
램의 양을 업데이트하려면,당신은 필요한 값에 대한 2 백 56 만 업데이트를 말한다 마지막 줄을 변경,내 경우에,나는 니스에 램의 3 기가 바이트를 바치고 싶어,그래서 블록은 다음과 같습니다:
DAEMON_OPTS="-a :6081 \-T localhost:6082 \-f /etc/varnish/default.vcl \-S /etc/varnish/secret \-s malloc,3G"
올바른 구성으로 실행 중인지 확인
예상대로 실행 중인지 확인하고ps aux | grep varnish
프로세스를 확인하십시오.:
/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,3G
바니시 시작 데몬 수정 일부 우분투 설치
서비스가 바니시 파일에 정의된 지침을 따르지 않는 버그를 발견했으며 시작 서비스를 편집해야 할 수도 있습니다.
파일을 열고 편집하려면
/lib/systemd/system/varnish.service
다음과 같은 것을 볼 수 있습니다:
Description=Varnish HTTP acceleratorDocumentation=https://www.varnish-cache.org/docs/4.1/ man:varnishdType=simpleLimitNOFILE=131072LimitMEMLOCK=infinityExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256MExecReload=/usr/share/varnish/reload-vclProtectSystem=fullProtectHome=truePrivateTmp=truePrivateDevices=trueWantedBy=multi-user.target
이 작업을 수행하려면 행 실행 시작 내부의 섹션을 업데이트하고 필요한 구성을 위해 교체해야 합니다:
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,3G
이 작업을 완료한 후에는 서비스 데몬을 다시 로드해야 합니다: systemctl daemon-reload
그런 다음 바니시를 다시 시작하십시오.
캐시 지우기 구성 방법
바니시 캐시를 지우려면 두 가지 방법이 있습니다:
- 니스 서비스를 다시 시작하십시오.
- 제거 요청을 바니시 서버로 보냅니다.
바니시 다시 시작 서비스를 다시 시작하는 것입니다.:
sudo service varnish restart
그러나 우리가 정말로 필요한 것은 응용 프로그램 서버에서 제거 요청을 보낼 수 있어야한다는 것입니다. 그것은 특정 경로 또는 그들 모두를 제거하기 위해 서버를 지시하여 달성 될 수있다. 컬을 사용하면 요청이 다음과 같이 표시됩니다:
curl -X PURGE http://192.168.1.3:6181
기본적으로 바니시는 외부 서버의 제거 요청을 허용하지 않으므로 응용 프로그램 서버의 요청을 허용해야 합니다. 이렇게 하려면/etc/varnish/default.vcl
로 이동하여 편집한 다음 제거 섹션을 찾습니다.:
acl purge { "localhost"; "127.0.0.1"; "192.168.1.2"/24;}
제거
디버깅하는 방법 모든 것이 제대로 작동하는지 확인해야 합니다. 이를 위해 다음 명령을 사용할 수 있습니다:
varnishlog -g request -q 'ReqMethod eq "PURGE"'
그런 다음 제거 요청을 보낼 수 있으며 제거 요청이 수신되었는지 확인하기 위해 다음과 같은 것을 볼 수 있습니다:2074>
* << Request >> 1179851- Begin req 1179850 rxreq- ReqStart 192.168.195.197 39700- ReqMethod PURGE- ReqURL /.*- ReqProtocol HTTP/1.1- ReqHeader Host: swapps.com- ReqHeader User-Agent: W3 Total Cache- ReqHeader Connection: close- ReqHeader X-Forwarded-For: 192.168.195.197- VCL_call RECV- Timestamp Process: 1531199642.768541 0.000094 0.000094- RespHeader Date: Tue, 10 Jul 2018 05:14:02 GMT- RespHeader Server: Varnish- RespHeader X-Varnish: 1179851- RespProtocol HTTP/1.1- RespStatus 200- RespReason OK- RespReason Purged- End
200 확인 상태는 모든 것이 잘 되었다는 것을 의미하며,니스는 요청된 웹 사이트에 대한 캐시를 지우고,서버에서 콘텐츠 캐싱을 시작하는 데 필요한 모든 것을 갖추어야 합니다.
수행하지 않은 경우 다음 단계는 캐시 할 내용과 그렇지 않은 내용의 규칙을 구성하는 것입니다.