설정 템플릿¶
상품기술서¶
{
"hosting": [
{
"name": "www.example.com",
"mode": {
"volatile": true
},
"origin": {
"protocol": "https",
"address": [
"org.example.com"
]
},
#상품기술서 적용을 위한 URL을 정의 한다.
#/pagedesk/edit/default/mxt/main : pagedesk와 pagemixed 기능을 사용 한다.
#/optimg/default : 이미지를 설정에 맞게 최적화 한다.
#/splitimg/default : 이미지를 설정에 맞게 분할 한다.
#/gif2video/default : gif 이미지를 설정에 맞게 동영상 파일로 변환 한다.
#참고 : https://doc.m2live.co.kr/references/settings/hosting.html#urlrewrites
#참고 : https://doc.m2live.co.kr/references/settings/functions/contents/pagefx.html#pagefx
"urlRewrites": [
{
"pattern": "!FUNCTION[*] & $URL[^www.example.com/product/descriptions/(.*)]",
"replace": "www.example.com/product/descriptions/#1/pagedesk/edit/default/mxt/main/optimg/default/splitimg/default/gif2video/default",
"accessLogUrl": "replace"
}
],
#상품기술서 적용된 요청이 실패(5XX, fail)하면 pagedesk와 pagemix만 적용 한다.
#참고 : https://doc.m2live.co.kr/references/settings/hosting.html#fallbacks
"fallbacks": {
"enable": true,
"matchingList": [
{
"resCodes": [
"5xx",
"fail"
],
"pattern": "$URL[^/(.*)/pagedesk/(.*)]",
"replace": "www.example.com/product/descriptions/#1/pagedesk/edit/default/mxt/main"
}
]
},
"functions": {
"network": {
"http": {
"frontEnd": {
#클라이언트 세션과 아무런 통신이 없는 상태로 설정된 시간이 경과하면 세션을 종료 한다.
#앞단에 ALB의 경우 기본값이 60초, 뒷단에 있는 M2는 이보다 2초 큰 값을 설정 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html?highlight=keepalivesec#session
"session": {
"keepAliveSec": 62
},
#캐싱 되는 URL은 원본 요청시 referer , X-Forwarded-Host를 추가하여 요청 한다.
#클라이언트 응답시 CORS를 고려하여 Access-Control-Allow-Origin 헤더를 추가하여 응답
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#modify
"headers": {
"modify": {
"enable": true,
"matchFirstOnly": false,
"defaultCaseSensitive": true,
"matchingList": [
{
"pattern": "*",
"header": "$REQ[referer: $REQ.referer]",
"mode": "set"
},
{
"pattern": "*",
"header": "$REQ[X-Forwarded-Host: $REQ.host]",
"mode": "set"
}
]
}
}
},
"backEnd": {
"health": {
#원본 장애시 배제를 하지 않는다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html#exclusion
"exclusion": {
"count": 0
}
},
#BYPASS URL은 원본 요청시 referer , X-Forwarded-Host를 추가하여 요청 한다.
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#ref-functions-network-http-backend-headers-modify
"headers": {
"modify": {
"enable": true,
"matchFirstOnly": false,
"matchingList": [
{
"pattern": "$URL[*]",
"header": "$ORGREQ[referer:$REQ.referer]",
"mode": "set"
},
{
"pattern": "*",
"header": "$REQ[X-Forwarded-Host: $REQ.host]",
"mode": "set"
}
]
},
#클라이언트가 보낸 User-Agent 헤더값을 원본으로 요청한다.
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#useragent
"userAgent": {
"enable": true,
"value": "*"
},
#클라이언트가 보낸 host 헤더값을 원본으로 요청 한다.
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#host
"host": {
"enable": true,
"value": "*"
}
},
#원본 서버에서 redirect 응답하는 경우 Location헤더를 추적하여 콘텐츠를 요청한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html#redirectiontrace
"redirectionTrace": {
"enable": true
}
}
}
},
"contents": {
#상품기술서 사용을 위해 pagedesk, pagemixed, pagefx를 활성화 한다.
"pagedesk": {
"meta": {
"enable": true
}
},
"pagemixed": {
"meta": {
"enable": true,
"keyword": "@pagedesk"
},
"traffics": {
"resource": {
"domain": "img.example.com"
},
"rebound": {
"domain": "img.example.com"
}
}
},
"pagefx": {
"meta": {
"enable": true,
"keyword": "@pagedesk"
},
"backend": {
"img": {
"selector": ".basicHtmlBox",
"domain": "img.example.com",
"dims": "hdims",
"optimg": {
"enable": true,
"src": {
"data-attrs": [
"data-src"
]
},
"dest": {
"formats": [
"avif",
"webp"
]
}
},
"splitimg": {
"src": {
"data-attrs": [
"data-src"
]
}
}
}
}
}
}
}
},
#상품기술서 적용을 위해 필요한 resource의 정보 획득을 위해 img.example.com라는 가상 호스트를 이용한다.
#상품기술서 생성에 필요한 img.exmaple.com는 서비스되는 가상 호스트를 이용하는것이 아니라 설정내 img.example.com을 이용 한다.
{
"name": "img.example.com",
"origin": {
"protocol": "https",
"address": [
"orgimg.example.com"
]
},
"functions": {
"network": {
"http": {
"frontEnd": {
#상품기술서 생성을 위해 필요한 분석 정보만 캐싱 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html#bypass
"bypass": {
"matchingList": [
{
"pattern": "$URL[*/hdims/analyze/src]",
"action": "cache"
}
],
"getMethod": {
"enable": true
}
}
}
}
}
}
}
]
}
메인 페이지¶
{
"hosting": [
{
"name": "www.example.com",
"mode": {
"volatile": true
},
"origin": {
"protocol": "https",
"address": [
"org.example.com"
]
},
#웹페이지 최적화를 적용할 URL을 정의 한다.
#/pagedesk/edit/default/mxt/main : pagedesk와 pagemixed 기능을 사용 한다.
#/optimg/default : 이미지를 설정에 맞게 최적화 한다.
#/optvideo/default : MP4 비디오를 WebM 포맷으로 최적화 한다.
#/optscript/default : 웹 문서의 초기 로딩속도 향상을 위해 스크립트 로딩을 최적화 한다.
#참고 : https://doc.m2live.co.kr/references/settings/hosting.html#urlrewrites
#참고 : https://doc.m2live.co.kr/references/settings/functions/contents/pagespeed.html#pagespeed-alpha
"urlRewrites": [
{
"pattern": "!FUNCTION[*] & !HEADER[Sec-Fetch-Dest: empty] & $URL[^www.example.com/(.*)]",
"replace": "www.example.com/#1/pagespeed/optimg/default/optscript/default/optvideo/default",
"accessLogUrl": "replace"
}
],
"functions": {
"network": {
"http": {
"frontEnd": {
#클라이언트 세션과 아무런 통신이 없는 상태로 설정된 시간이 경과하면 세션을 종료 한다.
#앞단에 ALB의 경우 기본값이 60초, 뒷단에 있는 M2는 이보다 2초 큰 값을 설정 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html?highlight=keepalivesec#session
"session": {
"keepAliveSec": 62
},
#캐싱 되는 URL은 원본 요청시 referer , X-Forwarded-Host를 추가하여 요청 한다.
#클라이언트 응답시 CORS를 고려하여 Access-Control-Allow-Origin 헤더를 추가하여 응답
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#modify
"headers": {
"modify": {
"enable": true,
"matchFirstOnly": false,
"defaultCaseSensitive": true,
"matchingList": [
{
"pattern": "*",
"header": "$REQ[referer: $REQ.referer]",
"mode": "set"
},
{
"pattern": "*",
"header": "$REQ[X-Forwarded-Host: $REQ.host]",
"mode": "set"
}
]
}
},
#pagespeed의 경우 모든 요청에 대해 bypass 한다.
"bypass":{
"getMethod": {
"enable": true
}
}
},
"backEnd": {
"health": {
#원본 장애시 배제를 하지 않는다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html#exclusion
"exclusion": {
"count": 0
}
},
#BYPASS URL은 원본 요청시 referer , X-Forwarded-Host를 추가하여 요청 한다.
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#ref-functions-network-http-backend-headers-modify
"headers": {
"modify": {
"enable": true,
"matchFirstOnly": false,
"matchingList": [
{
"pattern": "$URL[*]",
"header": "$ORGREQ[referer:$REQ.referer]",
"mode": "set"
},
{
"pattern": "*",
"header": "$REQ[X-Forwarded-Host: $REQ.host]",
"mode": "set"
}
]
},
#클라이언트가 보낸 User-Agent 헤더값을 원본으로 요청한다.
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#useragent
"userAgent": {
"enable": true,
"value": "*"
},
#클라이언트가 보낸 host 헤더값을 원본으로 요청 한다.
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#host
"host": {
"enable": true,
"value": "*"
}
}
}
}
},
"contents": {
#pagespeed를 활성화 한다.
#이미지 최적화 / MP4 비디오를 WebM 포맷으로 최적화 실행할 src, dest 도메인을 설정 한다.
"pagespeed": {
"meta": {
"enable": true,
},
"optimg": {
"matchingList": [
{
"src": "img.example.com",
"dest": "img.example.com"
}
]
},
"optvideo": {
"matchingList": [
{
"src": "img.example.com",
"dest": "img.example.com"
}
]
}
}
}
}
}
]
}