설정 템플릿

상품기술서

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