설정 템플릿

이미지 서비스

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