Хостинг статических сайтов

Хостинг статических сайтов (static site hosting) — дополнительная опция для бакета VK Object Storage, которая расширяет возможности доступа к статическому контенту. Без этой опции для получения содержания объекта используется URL, соответствующий его ключу. Хостинг статических сайтов позволяет комбинировать статический контент с правилами перенаправления, а также задавать индексную страницу (например, index.html) и страницу ошибки, возвращаемую при ошибках запроса (например, 404).

Примеры использования:

  • сайт-визитка,
  • личный блог,
  • лендинги,
  • перенаправление запросов,
  • документация.

Статический сайт на основе VK Object Storage может состоять из:

  • статического контента: HTML, CSS, файлы медиа (изображения, аудио, видео), документы (PDF, TXT) и другие форматы, доступные для просмотра в браузере.
  • файлов сценариев (скриптов) на JavaScript, не требующих серверной обработки: раскрывающиеся меню, табы, аккордеоны и др.

После установки конфигурации, cтатический сайт доступен по адресу:

https://<ИМЯ_БАКЕТА>.hb-website.<ENDPOINT_HOSTNAME>/<PREFIX>

Здесь:

  • <ИМЯ_БАКЕТА> — имя бакета, для которого была установлена конфигурация статического сайта;

  • <ENDPOINT_HOSTNAME> — имя хоста сервиса VK Object Storage, должен соответствовать региону аккаунта:

    • hb.vkcloud-storage.ru или hb.ru-msk.vkcloud-storage.ru — домен региона Москва;
    • hb.kz-ast.vkcloud-storage.ru — домен региона Казахстан.
  • <PREFIX> — префикс ключа объекта индексной страницы. Может быть пустым.

JSON-конфигурация статического сайта

Конфигурация предоставляется в формате JSON и используется при управлении конфигурацией через AWS CLI.

Общая структура конфигурации:

{   "IndexDocument": {           // Индексная страница      "Suffix": "string"   },   "ErrorDocument": {           // Страница ошибки      "Key": "string"   },   "RoutingRules": [            // Правила перенаправления      {          "Condition": {              "HttpErrorCodeReturnedEquals": "string",         "KeyPrefixEquals": "string"         },         "Redirect": {             "HostName": "string",         "HttpRedirectCode": "string",         "Protocol": "http"|"https",         "ReplaceKeyPrefixWith": "string",         "ReplaceKeyWith": "string"         }      }   ...   ],    "RedirectAllRequestsTo": {   // Безусловное перенаправление всех запросов    "HostName": "string",    "Protocol": "http"|"https"    }}

Параметры конфигурации индексной страницы

IndexDocument — элемент конфигурации, который задает индексную страницу.

Совместимость IndexDocument с другими элементами конфигурации:

Элемент конфигурации

Совместимость

Функциональность

ErrorDocument

Хостинг статических сайтов

Страница ошибки

RoutingRules

Хостинг статических сайтов

Правила перенаправления

RedirectAllRequestsTo

Хостинг статических сайтов

Безусловное перенаправление

Параметры IndexDocument:

Имя

Описание

IndexDocument — элемент формата object

Suffix

Суффикс (имя) для объекта индексной страницы.

Формат: string.

При открытии страницы сайта будет загружаться содержание объекта с указанным значением.

Не может содержать символ /.

Полный путь: IndexDocumentSuffix

Параметры конфигурации страницы ошибки

ErrorDocument — элемент конфигурации, который задает страницу ошибки. Используется вместе с элементом конфигурации IndexDocument, который задает индексную страницу.

Например, при открытии несуществующей страницы возникнет ошибка 404. Вместо несуществующей страницы загрузится содержание указанного объекта, например errordoc/file.html.

Совместимость ErrorDocument с другими элементами конфигурации:

Элемент конфигурации

Совместимость

Функциональность

IndexDocument (обязательный)

Хостинг статических сайтов

Индексная страница

RoutingRules

Хостинг статических сайтов

Правила перенаправления

RedirectAllRequestsTo

Хостинг статических сайтов

Безусловное перенаправление

Параметры ErrorDocument:

Имя

Описание

ErrorDocument — элемент формата object.

Key

Полный ключ объекта страницы с ошибкой.

Формат: string.

При HTTP-ответе 4XX, для которого в RoutingRules нет правила перенаправления, будет загружаться содержание из объекта с указанным ключом. Перенаправление не выполняется.

Полный путь: ErrorDocumentKey

Параметры конфигурации правил перенаправления

RoutingRules — элемент конфигурации, который задает правила перенаправления. Используется вместе с элементом конфигурации IndexDocument, который задает индексную страницу.

Совместимость RoutingRules с другими элементами конфигурации:

Элемент конфигурации

Совместимость

Функциональность

IndexDocument (обязательный)

Хостинг статических сайтов

Индексная страница

ErrorDocument

Хостинг статических сайтов

Страница ошибки

RedirectAllRequestsTo

Хостинг статических сайтов

Безусловное перенаправление

Параметры RoutingRules:

Имя

Описание

RoutingRules — правила перенаправления в формате array (массив):

  • Каждый элемент массива RoutingRules[i] — отдельное правило в формате object, в котором задаются условие Condition и параметры перенаправления Redirect.
  • Правила применяются в том порядке, в котором они указаны в массиве RoutingRules.
  • Если правило сработало, формируется новый запрос, к которому также применяются правила RoutingRules

Condition

Условия срабатывания правила в формате object.

Если не указано ни одного условия, перенаправление будет срабатывать для всех запросов.

Полный путь: RoutingRules[i]Condition

HttpErrorCodeReturnedEquals

Код ошибки в формате 4XX или 5XX, при котором срабатывает правило.

Если используется вместе с KeyPrefixEquals, правило сработает только при соблюдении обоих условий.

Формат: string.

При получении HTTP-ответа с указанным кодом ошибки срабатывает правило, указанное в RoutingRules[i]Redirect.

Полный путь: RoutingRules[i]ConditionHttpErrorCodeReturnedEquals

KeyPrefixEquals

Префикс ключа запрошенного объекта. Если указать полный ключ, правило будет применяться только к этому объекту.

Если используется вместе с HttpErrorCodeReturnedEquals, правило сработает только при соблюдении обоих условий.

Формат: string.

При открытии страницы с указанным ключом или префиксом срабатывает правило, указанное в RoutingRules[i]Redirect.

Полный путь: RoutingRules[i]ConditionKeyPrefixEquals

Redirect

Задает настройки перенаправления в формате object.

Полный путь: RoutingRules[i]Redirect

HostName

Имя того хоста, на который будет выполнено перенаправление.

Формат: string.

Может использоваться совместно с другими параметрами Redirect.

Если значение не указано, имя хоста не будет изменено.

Полный путь: RoutingRules[i]RedirectHostName

HttpRedirectCode

HTTP-код в формате 3XX, который будет возвращаться при перенаправлении.

Формат: string.

Если значение не указано, используется код ответа по умолчанию — 301.

Может использоваться совместно с другими параметрами Redirect.

Полный путь: RoutingRules[i]RedirectHttpRedirectCode

Protocol

Указывается при необходимости изменить протокол.

Формат: string.

Возможные значения: http, https.

Может использоваться совместно с другими параметрами Redirect.

Полный путь: RoutingRules[i]RedirectProtocol

ReplaceKeyPrefixWith

Префикс ключа объекта, на который необходимо заменить префикс запрошенного объекта.

Формат: string.

При указании пустой строки новый запрос будет без префикса.

Обычно используется вместе с RoutingRules[i]ConditionKeyPrefixEquals для перенаправления группы объектов с одного префикса на другой.

Может использоваться совместно с параметрами HostName, HttpRedirectCode и Protocol.

Несовместимо с параметром ReplaceKeyWith.

Полный путь: RoutingRules[i]RedirectReplaceKeyPrefixWith

ReplaceKeyWith

Ключ объекта, на который нужно перенаправить.

Формат: string.

Может использоваться совместно с параметрами HostName, HttpRedirectCode и Protocol.

Несовместимо с параметром ReplaceKeyPrefixWith.

Полный путь: RoutingRules[i]RedirectReplaceKeyWith

Параметры конфигурации безусловного перенаправления

RedirectAllRequestsTo — элемент конфигурации, который задает безусловные правила перенаправления для всех запросов сайта.

Совместимость RedirectAllRequestsTo с другими элементами конфигурации:

Элемент конфигурации

Совместимость

Функциональность

IndexDocument

Хостинг статических сайтов

Индексная страница

ErrorDocument

Хостинг статических сайтов

Страница ошибки

RoutingRules

Хостинг статических сайтов

Правила перенаправления

Параметры RedirectAllRequestsTo:

Имя

Описание

RedirectAllRequestsTo — элемент формата object, задает безусловные правила перенаправления для всех запросов сайта

HostName

Имя того хоста, на который будет выполнено перенаправление. Обязательный параметр.

Формат: string.

Может использоваться совместно с Protocol.

Полный путь: RedirectAllRequestsToHostName

Protocol

Указывается при необходимости изменить протокол.

Формат: string.

Возможные значения: http, https.

Может использоваться совместно с HostName.

Полный путь: RedirectAllRequestsToProtocol

Примеры конфигураций

Некоторые параметры несовместимы друг с другом, поэтому число их комбинаций ограничено.

  • Только индексная страница IndexDocument:

    {    "IndexDocument": {    "Suffix": "index.html"    }}
  • Индексная страница IndexDocument и страница ошибки ErrorDocument:

    {    "IndexDocument": {    "Suffix": "index.html"    },    "ErrorDocument": {    "Key": "error.html"    }}
  • Индексная страница IndexDocument и правила перенаправления RoutingRules:

    {    "IndexDocument": {    "Suffix": "index.html"    },    "RoutingRules": [    {        "Condition": {        "KeyPrefixEquals": "docs/"        },        "Redirect": {        "ReplaceKeyPrefixWith": "documents/",        "HttpRedirectCode": "301"        }    }    ]}

    В приведенном примере все запросы с префиксом docs/ будут перенаправляться на documents/ и возвращать HTTP-код ответа 301.

  • Индексная страница IndexDocument, страница ошибки ErrorDocument и правила перенаправления RoutingRules:

    {    "IndexDocument": {    "Suffix": "index.html"    },    "ErrorDocument": {    "Key": "error.html"    },    "RoutingRules": [    {        "Condition": {        "HttpErrorCodeReturnedEquals": "404"        },        "Redirect": {        "ReplaceKeyWith": "index.html",        "HttpRedirectCode": "302"        }    }    ]}

    В приведенном примере при HTTP-ошибке 404 запрос перенаправляется на index.html, при других ошибках возвращается содержимое error.html.

  • Безусловное перенаправление RedirectAllRequestsTo для всех запросов:

    {    "RedirectAllRequestsTo": {    "HostName": "example.com",    "Protocol": "https"    }}

    В приведенном примере все запросы перенаправляются на example.com по протоколу https. В ответе всегда возвращается код 301.