설정 템플릿¶
이미지 서비스¶
{
"hosting": [
{
#상품기술서 서비스를 위한 요청을 external.mixed.proxy.m2 가상 호스트로 분기 한다.
#상품기술서 요청과 웹 요청 분기를 통해 가상 호스트별 통계를 구분 하여 산출 할 수 있다.
#참고 : https://doc.m2live.co.kr/references/settings/hosting.html#urlrewrites
"urlRewrites": [
{
"pattern": "$URL[^img.example.com/(.*)/mxt/resource/(.*)]",
"replace": "external.mixed.proxy.m2/#1/mxt/resource/#2",
"accessLogUrl": "replace"
},
{
"pattern": "$URL[^img.example.com/(.*)/proxy/(.+)/src/(.*)]",
"replace": "external.mixed.proxy.m2/#1/proxy/#2/src/#3",
"accessLogUrl": "replace"
},
{
"pattern": "$URL[^img.example.com/(.*)/proxy/src/(.*)]",
"replace": "external.mixed.proxy.m2/#1/proxy/src/#2",
"accessLogUrl": "replace"
},
{
"pattern": "$URL[^img.example.com/(.*)/xcdr/(.*)]",
"replace": "external.mixed.proxy.m2/#1/xcdr/#2",
"accessLogUrl": "replace"
},
{
"pattern": "$URL[^img.example.com/(.*)/mxt/rebound/(.*)]",
"replace": "external.mixed.proxy.m2/#1/mxt/rebound/#2",
"accessLogUrl": "replace"
}
],
"name": "img.example.com",
"mode": {
"volatile": true
},
"origin": {
"protocol": "https",
"address": [
"orgimg.example.com"
]
},
"functions": {
"network": {
#정의 되지 않은 도메인의 경우 prxoy를 활성화 하여 원본 URL을 호출 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/proxy.html#proxy
"proxy": {
"meta": {
"enable": true
}
},
"http": {
"frontEnd": {
#클라이언트 세션과 아무런 통신이 없는 상태로 설정된 시간이 경과하면 세션을 종료 한다.
#앞단에 ALB의 경우 기본값이 60초, 뒷단에 있는 M2는 이보다 2초 큰 값을 설정 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html?highlight=keepalivesec#session
"session": {
"keepAliveSec": 62
}
},
"backEnd": {
#원본 서버에서 redirect 응답하는 경우 Location헤더를 추적하여 콘텐츠를 요청한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html#redirectiontrace
"redirectionTrace": {
"enable": true
}
}
}
},
#이미지 최적화를 통해 hyperdims와 transcoder를 활성화 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/contents/hyperdims.html#hyperdims
#참고 : https://doc.m2live.co.kr/references/settings/functions/contents/transcoder.html#transcoder
"contents": {
"transcoder": {
"meta": {
"enable": true
}
},
"hyperdims": {
"meta": {
"enable": true
}
}
}
}
},
{
"name": "external.mixed.proxy.m2",
"mode": {
"volatile": true
},
"origin": {
"address": [
"127.0.0.1:8585"
]
},
"functions": {
"network": {
#정의 되지 않은 도메인의 경우 prxoy를 활성화 하여 원본 URL을 호출 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/proxy.html#proxy
"proxy": {
"meta": {
"enable": true
}
},
"http": {
"frontEnd": {
#hyperdims 기능이 실패 하여 fallbacks 처리된 URL은 원래 URL로 HTTP상태코드(302) 를 이용하여 응답 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/network/http.html?highlight=keepalivesec#accesscontrol
"accessControl": {
"enable": true,
"defaultAction": "allow",
"denialCode": 401,
"matchingList": [
{
"pattern": "/_fallback_redirect_/*",
"action": "redirect",
"location": "#1",
"denialCode": 302
}
]
},
"headers": {
#캐싱 되는 URL은 원본 요청시 referer , X-Forwarded-Host를 추가하여 요청 한다.
#클라이언트 응답시 CORS를 고려하여 Access-Control-Allow-Origin 헤더를 추가하여 응답 한다.
#https://doc.m2live.co.kr/references/settings/functions/network/http.html#modify
"modify": {
"enable": true,
"matchFirstOnly": false,
"defaultCaseSensitive": true,
"matchingList": [
{
"pattern": "$URL[*]",
"header": "$RES[Access-Control-Allow-Origin: *]",
"mode": "set"
},
{
"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": {
"meta": {
"enable": true
}
},
"pagemixed": {
"meta": {
"enable": true,
"keyword": "@pagedesk"
}
},
#이미지 최적화 설정 hyperdims와 transcoder를 활성화 한다.
#참고 : https://doc.m2live.co.kr/references/settings/functions/contents/hyperdims.html#hyperdims
#참고 : https://doc.m2live.co.kr/references/settings/functions/contents/transcoder.html#transcoder
"transcoder": {
"meta": {
"enable": true
}
},
"hyperdims": {
"meta": {
"enable": true
}
}
}
},
#상품기술서 서비스를 위한 요청에 대해 응답 코드가 4xx, 5xx, 응답 실패 일때 URL을 redirect 한다.
#redirect URL은 accessControl 정책을 이용 한다.
#참고 : https://doc.m2live.co.kr/references/settings/hosting.html#fallbacks
"fallbacks": {
"enable": true,
"matchingList": [
{
"resCodes": [
"4xx",
"5xx",
"fail"
],
"pattern": "$URL[(.*)/hdims/(.*)]",
"replace": "/_fallback_redirect_/#1"
},
{
"resCodes": [
"4xx",
"5xx",
"fail"
],
"pattern": "$URL[(.*)/proxy/src/(.*)]",
"replace": "/_fallback_redirect_/#2"
}
]
}
}
]
}