Fastly 설정 적용 조건 설정
여기에 조건의 설정과 적용 방법을 소개한다.
조건의 설정 방법과 응용 절차
기본적으로 아래의 절차에 따라 적용 조건에 따라 설정한다.
1. 설정 만들기
2. 1에 대한 응용 조건 설정(기존 조건을 유용할 수 있는 상황에서 선택)
여기에 2의 조건 설정을 설명한다.조건 설정은 구체적인 설정을 보면 이해하기 쉽다. 다음은 몇 가지 예를 소개하여 설명한다.
조건 설정 예
영역에 따라 사냥꾼자리를 분배하다
Fastly의 서비스는 한 서비스에 여러 영역을 설정할 수 있다.분야별로 구분해서 사용하고자 하는 오리온의 상황을 소개한다.
사냥꾼자리에 대한 설정이 되어 있을 거예요.CONFIGURE
-ORIGIN
를 선택하면 다음 화면이 표시됩니다.조건을 적용할 올리브 서버Attach a condition
를 선택하십시오.
다음 화면을 엽니다.
이미 존재하는 조건을 유용하려면 Select a condition
에서 선택할 수 있지만 여기는 새로 만들어졌기 때문에 선택CREATE A NEW REQUEST CONDTION
을 하면 조건 설정 화면이 열립니다.
영역에 따라 사냥꾼자리를 분배하다
Fastly의 서비스는 한 서비스에 여러 영역을 설정할 수 있다.분야별로 구분해서 사용하고자 하는 오리온의 상황을 소개한다.
사냥꾼자리에 대한 설정이 되어 있을 거예요.
CONFIGURE
-ORIGIN
를 선택하면 다음 화면이 표시됩니다.조건을 적용할 올리브 서버Attach a condition
를 선택하십시오.다음 화면을 엽니다.
이미 존재하는 조건을 유용하려면
Select a condition
에서 선택할 수 있지만 여기는 새로 만들어졌기 때문에 선택CREATE A NEW REQUEST CONDTION
을 하면 조건 설정 화면이 열립니다.req.http.host == "www.a-example.com"
.이것은 요청한 호스트 헤더가 www.a-example.com일 때 이 설정이 적용된다는 것을 의미한다. # Request Condition: Use Origin A Prio: 10
if( req.http.host == "www.a-example.com" ) {
set req.backend = F_a-example.com;
}
#end condition
200번 테이블 이외의 곳에서 상륙하다
다음은 로그에 적용해 봅시다.로그 용량 문제로 인해 정상적으로 로그인하지 않고 예상치 못한 요청에만 로그를 기록하는 경우가 발생할 수 있습니다.나는 그 조건을 설정하려고 했다.
이번에는 로그 설정이라 선택
CONFIGURE
-LOGGING
.상응하는 로그Attach a condition
를 선택하면 CREATE A NEW REQUEST CONDTION
부터 조건 설정을 열 때까지 동일합니다.기본적으로 로그는 컨텐트를 보낼 때 출력되므로 Type은 Response입니다.아래 설정을 통해 200번 데스크톱 이외의 데스크톱을 로그 출력의 조건으로 삼을 수 있다.
특정 URL을 pass로 설정
이 사용 방법은 아마도 가장 유행할 것이다.기본적으로 캐시이지만 특정 경로를 포함하는 URL은 캐시되지 않습니다.
이 설정은
CONFIGURE
-SETTINGS
-Request settings
부터 시작합니다.화면 안에Attach a condition
의 링크가 있는데 이 설정은 이전의 설정과 같은 조건을 설정한다.제작된 코드를 보니 다음과 같은 내용이 기재되어 있어 설정할 수 있을 것 같다.
# Request Condition: url pass Prio: 10
if( req.url ~ "^/pass/" ) {
if (!req.http.Fastly-FF) {
if (req.http.X-Forwarded-For) {
set req.http.Fastly-Temp-XFF = req.http.X-Forwarded-For ", " client.ip;
} else {
set req.http.Fastly-Temp-XFF = client.ip;
}
} else {
set req.http.Fastly-Temp-XFF = req.http.X-Forwarded-For;
}
return(pass);
}
#end condition
Activate를 하면 정상적으로 작동해야 하지만, 여기서 프로리티를 좀 고려해 봅시다.이 코드 위에 다음과 같은 내용이 있다고 가정해 보세요.이것은 png 확장자가 있는 파일에 캐시할 코드입니다.근거
return(lookup)
vclrecv 아래의 코드는 실행되지 않습니다.따라서 /pass/example.png
와 같은 파일이 있으면 png 파일과 같은 조건이 먼저 적용되고 캐시됩니다.이 파일을 패스로 만들려면 어떻게 해야 할까요?조건을 변경할 수 있는 몇 가지 방법이 있지만 프로리티 변경을 통해서도 가능하다.위에서 설명한 대로 Prority는 실행 순서를 변경할 수 있습니다.예를 들어 이 경우 프로리티의 값
5
을 /pass/example.png
으로 설정하면pass의 코드는 png의 코드보다 먼저 실행되고pass
는 URL에 포함된 조건을 먼저 적용^
한 다음pass를 한다. # Request Condition: cache png Prio: 10
if( req.url.ext == "png" ) {
if (!req.http.Fastly-FF) {
if (req.http.X-Forwarded-For) {
set req.http.Fastly-Temp-XFF = req.http.X-Forwarded-For ", " client.ip;
} else {
set req.http.Fastly-Temp-XFF = client.ip;
}
} else {
set req.http.Fastly-Temp-XFF = req.http.X-Forwarded-For;
}
return(lookup);
}
#end condition
이러한 조건 설정은 기본적으로 GUI에서 구현할 수 있습니다.그러나 충돌하는 설정이 있다면 어느 것을 먼저 실시해야 할지 고민하면서 프로리티의 값으로 순서를 제어하면 더욱 유연한 설정이 가능하다.조건에 대한 조건문
영어 문서는 참고하십시오VCL regular expression cheat sheet.아래의 몇 가지 예를 들자.
req.url.ext="jpg": 확장자가 jpg인 경우(1)(완전 일치)
req.http.호스트 첫 번째 (필드) 는 www로 시작합니다.
~
는 시작 문자를 나타냅니다..
부분은 일치하며 www로 시작하면 뒤에는 임의입니다.req.확장자가 jpg일 때(2).
\
에서 도피하고 마침표를 표시한다.$
는 마지막 문자req.확장자는 png, jpg, css, js 중 하나입니다.
|
에서 OR을 나타냅니다.req.유효기간이 끝나면 검색어를 뒤에 연결할 수 있습니다.
\?
에서 문자?
를 나타낸다.이외의 .
,*
,?
는 정규 표현식의 특수 문자이다.req.그 중 한 글자 + 서버는 확장자입니다.
req.http.cookie && req.http.User-Agent: 요청에 쿠키와 User-Agent 헤더가 있을 때.
abc
는 조건문의 AND입니다.beresp.status == 500 || beresp.status==503: 응답하는 상태 코드가 500 또는 503인 경우.
&&
는 조건문 OR입니다.!req.url : req.url이 존재하지 않을 때.
||
는 부정을 나타낸다.req.url은 기본적으로 모든 요청에 존재하기 때문에 이 조건은 항상 가짜입니다.Reference
이 문제에 관하여(Fastly 설정 적용 조건 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Satoshi-Ishii/items/2e4d06a953aab20d5708텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)