설정 템플릿

상품기술서 페이지 설정 템플릿을 제공한다.

{
  "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
                            }
                        }
                    }
                }
            }
        }
    }
  ]
}