Хостинг статических сайтов
Хостинг статических сайтов (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 и используется при управлении конфигурацией через 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 с другими элементами конфигурации:
Элемент конфигурации | Совместимость | Функциональность |
|---|---|---|
| ||
| ||
|
Параметры IndexDocument:
Имя | Описание |
|---|---|
| |
| Суффикс (имя) для объекта индексной страницы. Формат: При открытии страницы сайта будет загружаться содержание объекта с указанным значением. Не может содержать символ Полный путь: |
ErrorDocument — элемент конфигурации, который задает страницу ошибки. Используется вместе с элементом конфигурации IndexDocument, который задает индексную страницу.
Например, при открытии несуществующей страницы возникнет ошибка 404. Вместо несуществующей страницы загрузится содержание указанного объекта, например errordoc/file.html.
Совместимость ErrorDocument с другими элементами конфигурации:
Элемент конфигурации | Совместимость | Функциональность |
|---|---|---|
| ||
| ||
|
Параметры ErrorDocument:
Имя | Описание |
|---|---|
| |
| Полный ключ объекта страницы с ошибкой. Формат: При HTTP-ответе Полный путь: |
RoutingRules — элемент конфигурации, который задает правила перенаправления. Используется вместе с элементом конфигурации IndexDocument, который задает индексную страницу.
Совместимость RoutingRules с другими элементами конфигурации:
Элемент конфигурации | Совместимость | Функциональность |
|---|---|---|
| ||
| ||
|
Параметры RoutingRules:
Имя | Описание |
|---|---|
| |
| Условия срабатывания правила в формате Если не указано ни одного условия, перенаправление будет срабатывать для всех запросов. Полный путь: |
| Код ошибки в формате Если используется вместе с Формат: При получении HTTP-ответа с указанным кодом ошибки срабатывает правило, указанное в Полный путь: |
| Префикс ключа запрошенного объекта. Если указать полный ключ, правило будет применяться только к этому объекту. Если используется вместе с Формат: При открытии страницы с указанным ключом или префиксом срабатывает правило, указанное в Полный путь: |
| Задает настройки перенаправления в формате Полный путь: |
| Имя того хоста, на который будет выполнено перенаправление. Формат: Может использоваться совместно с другими параметрами Если значение не указано, имя хоста не будет изменено. Полный путь: |
| HTTP-код в формате Формат: Если значение не указано, используется код ответа по умолчанию — Может использоваться совместно с другими параметрами Полный путь: |
| Указывается при необходимости изменить протокол. Формат: Возможные значения: Может использоваться совместно с другими параметрами Полный путь: |
| Префикс ключа объекта, на который необходимо заменить префикс запрошенного объекта. Формат: При указании пустой строки новый запрос будет без префикса. Обычно используется вместе с Может использоваться совместно с параметрами Несовместимо с параметром Полный путь: |
| Ключ объекта, на который нужно перенаправить. Формат: Может использоваться совместно с параметрами Несовместимо с параметром Полный путь: |
RedirectAllRequestsTo — элемент конфигурации, который задает безусловные правила перенаправления для всех запросов сайта.
Совместимость RedirectAllRequestsTo с другими элементами конфигурации:
Элемент конфигурации | Совместимость | Функциональность |
|---|---|---|
| ||
| ||
|
Параметры RedirectAllRequestsTo:
Имя | Описание |
|---|---|
| |
| Имя того хоста, на который будет выполнено перенаправление. Обязательный параметр. Формат: Может использоваться совместно с Полный путь: |
| Указывается при необходимости изменить протокол. Формат: Возможные значения: Может использоваться совместно с Полный путь: |
Некоторые параметры несовместимы друг с другом, поэтому число их комбинаций ограничено.
-
Только индексная страница
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.