Настройка следования перенаправлениям запросов
Вы можете выключить следование перенаправлениям запросов с помощью API при создании или изменении CDN-ресурса.
Примечание
Опция работает только при включенной функции экранирования источников.
Чтобы включить опцию, добавьте блок followRedirects при использовании метода create или update для ресурса Resource:
"followRedirects": {
"enabled": "<true_или_false>",
"codes": [
"<список_кодов>"
],
"useCustomHost": "<true_или_false>"
}
Где:
-
enabled— включение опции:true— включить опцию.false— отключить опцию.
-
codes— список кодов перенаправления, по которым Cloud CDN будет следовать. Возможные значения:301— Moved Permanently (перемещено навсегда).302— Found (найдено).303— See Other (смотреть другое).307— Temporary Redirect (временное перенаправление).308— Permanent Redirect (постоянное перенаправление).
-
useCustomHost— управление заголовкомHost:true— использовать заголовокHostот основного источника. Например, если источникexample.comвернет редирект наya.ru, запрос будет сделан сHost: example.com.false— использовать заголовокHostот домена перенаправления. Например, если источникexample.comвернет редирект наya.ru, запрос будет сделан сHost: ya.ru.
Чтобы включить опцию, добавьте блок follow_redirects при использовании вызова ResourceService/Create или ResourceService/Update:
"follow_redirects": {
"enabled": "<true_или_false>",
"codes": [
"<список_кодов>"
],
"use_custom_host": "<true_или_false>"
}
Где:
-
enabled— включение опции:true— включить опцию.false— отключить опцию.
-
codes— список кодов перенаправления, по которым Cloud CDN будет следовать. Возможные значения:301— Moved Permanently (перемещено навсегда).302— Found (найдено).303— See Other (смотреть другое).307— Temporary Redirect (временное перенаправление).308— Permanent Redirect (постоянное перенаправление).
-
use_custom_host— управление заголовкомHost:true— использовать заголовокHostот основного источника. Например, если источникexample.comвернет редирект наya.ru, запрос будет сделан сHost: example.com.false— использовать заголовокHostот домена перенаправления. Например, если источникexample.comвернет редирект наya.ru, запрос будет сделан сHost: ya.ru.
Пример
В этом примере создается CDN-ресурс для интернет-магазина, который использует несколько доменов. Основной источник shop.example.com может перенаправлять запросы на cdn-content.example.net для оптимизации доставки статических файлов. Здесь разрешено следование редиректам для кодов 301 и 302 с сохранением оригинального заголовка Host для корректной обработки запросов.
-
Получите IAM-токен для аутентификации в API и запишите его в переменную:
export IAM_TOKEN=`yc iam create-token` -
Создайте CDN-ресурс с разрешенным следованием перенаправлениям запросов:
cURLgRPCurlcurl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://cdn.api.cloud.yandex.net/cdn/v1/resources' \ --data '{ "folderId": "b12m81qm6abc********", "cname": "cdn-shop.example.com", "origin": { "originSourceParams": { "source": "shop.example.com", "meta": { "common": { "name": "shop.example.com" } } } }, "originProtocol": "HTTPS", "options": { "followRedirects": { "enabled": true, "codes": ["301", "302"], "useCustomHost": true } } }'Результат:
{ "done": true, "metadata": { "@type": "type.googleapis.com/yandex.cloud.cdn.v1.CreateResourceMetadata", "resourceId": "bc8rt2ynimae********" }, "response": { ... "followRedirects": { "enabled": true, "codes": [ "301", "302" ], "useCustomHost": true } }, ... "id": "bc82j4x6n6pb********", "description": "Create resource", "createdAt": "2026-02-03T09:27:51.714683Z", "createdBy": "aje9k8luj4qf********", "modifiedAt": "2026-02-03T09:27:51.714683Z" }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/cdn/v1/resource_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "folder_id": "b12m81qm6abc********", "cname": "cdn-shop.example.com", "origin": { "origin_source_params": { "source": "shop.example.com", "meta": { "common": { "name": "shop.example.com" } } } }, "origin_protocol": "HTTPS", "options": { "follow_redirects": { "enabled": true, "codes": ["301", "302"], "use_custom_host": true } } }' \ cdn.api.cloud.yandex.net:443 \ yandex.cloud.cdn.v1.ResourceService/CreateРезультат:
{ "id": "bc87tcdmptuy********", "description": "Create resource", "createdAt": "2026-02-03T09:09:04.967980Z", "createdBy": "aje8m8lur3qf********", "modifiedAt": "2026-02-03T09:09:04.967980Z", "done": true, "metadata": {"@type":"type.googleapis.com/yandex.cloud.cdn.v1.CreateResourceMetadata","resourceId":"bc8rskqqnd23********"}, "response": {"@type":"type.googleapis.com/yandex.cloud.cdn.v1.Resource","active":true,"cname":"altaraskin.online","createdAt":"2026-02-03T09:09:04.808428Z","folderId":"b1g652qoimb4********","id":"bc8rskqqnd23********","options":{ ... "followRedirects":{"enabled":true,"codes":["301","302"],"useCustomHost":true}}, ... } } -
Включите экранирование источников:
Консоль управленияgRPCurl- В консоли управления
выберите каталог, в котором расположен ресурс. - Перейдите в сервис Cloud CDN.
- Нажмите на имя необходимого ресурса.
- Перейдите на вкладку Экранирование источников.
- В правом верхнем углу включите опцию экранирования источников.
- В окне Настройки экранирования в поле Локация выберите необходимую локацию.
- Нажмите кнопку Включить.
После включения статус экранирования изменится с
Not activatedнаActive.grpcurl \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/cdn/v1/shielding_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "bc8rskqqnd23********", "location_id": "1" }' \ cdn.api.cloud.yandex.net:443 \ yandex.cloud.cdn.v1.ShieldingService/ActivateРезультат:
{ "id": "bc8yiwltf3hg********", "description": "Activate Origin Shielding", "createdAt": "2026-02-03T09:13:43.226165Z", "createdBy": "aje9k8luj4qf********", "modifiedAt": "2026-02-03T09:13:43.226165Z", "done": true, "metadata": {"@type":"type.googleapis.com/yandex.cloud.cdn.v1.ActivateShieldingMetadata","resourceId":"bc8rskqqnd23********"}, "response": {"@type":"type.googleapis.com/yandex.cloud.cdn.v1.ShieldingDetails","city":"Moscow","country":"Russia","dataCenter":"msk","locationId":"1"} } - В консоли управления