Настройка хостинга
Вы можете разместить свой статический сайт в Object Storage. Статический сайт строится на клиентских технологиях, таких как HTML, CSS и JavaScript. Он не может содержать каких-либо скриптов, требующих запуска на стороне веб-сервера.
В бакетах Object Storage поддерживаются:
Хостинг статического сайта
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, для которого хотите настроить хостинг. - На панели слева выберите
Настройки. - Перейдите на вкладку Основные.
- Откройте публичный доступ к операциям с бакетом.
- Нажмите Сохранить.
- Выберите вкладку Веб-сайт.
- В разделе Хостинг:
- в поле Главная страница укажите абсолютный путь к файлу в бакете для главной страницы сайта, например
pages/index.html
; - (опционально) в поле Страница ошибки укажите абсолютный путь к файлу в бакете, который будет отображаться при ошибках 4xx, например
pages/error404.html
. По умолчанию Object Storage возвращает собственную страницу.
- в поле Главная страница укажите абсолютный путь к файлу в бакете для главной страницы сайта, например
- Нажмите кнопку Сохранить.
Проверить хостинг можно перейдя по ссылке в поле Ссылка.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для настройки хостинга статического сайта в бакете:
yc storage bucket update --help
-
Создайте файл с настройками хостинга в формате JSON. Например:
{ "index": "index.html", "error": "error404.html" }
Где:
index
— абсолютный путь к файлу главной страницы сайта.error
— абсолютный путь к файлу, который будет отображаться пользователю при ошибках 4xx.
-
Выполните следующую команду:
yc storage bucket update --name <имя_бакета> \ --website-settings-from-file <путь_к_файлу>
Где:
--name
— имя бакета.--website-settings-from-file
— путь к файлу с настройками хостинга.
Результат:
name: my-bucket folder_id: b1gjs8dck8bv******** default_storage_class: STANDARD versioning: VERSIONING_SUSPENDED max_size: "10737418240" acl: {} created_at: "2022-12-14T08:42:16.273717Z"
Чтобы убедиться, что настройки хостинга появились в описании бакета, выполните команду:
yc storage --name <имя_бакета> bucket get --full
Результат:
website_settings:
index: index.html
error: error404.html
redirect_all_requests: {}
Примечание
Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin
, на каталог, в котором будут создаваться ресурсы.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Перед началом работы, получите статические ключи доступа — секретный ключ и идентификатор ключа, используемые для аутентификации в Object Storage.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
provider "yandex" { token = "<OAuth>" cloud_id = "<идентификатор_облака>" folder_id = "<идентификатор_каталога>" zone = "ru-central1-a" } resource "yandex_iam_service_account" "sa" { name = "<имя_сервисного_аккаунта>" } // Назначение роли сервисному аккаунту resource "yandex_resourcemanager_folder_iam_member" "sa-admin" { folder_id = "<идентификатор_каталога>" role = "storage.admin" member = "serviceAccount:${yandex_iam_service_account.sa.id}" } // Создание статического ключа доступа resource "yandex_iam_service_account_static_access_key" "sa-static-key" { service_account_id = yandex_iam_service_account.sa.id description = "static access key for object storage" } resource "yandex_storage_bucket" "test" { access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key bucket = "<имя_бакета>" acl = "public-read" website { index_document = "index.html" error_document = "error.html" } }
Где:
access_key
— идентификатор статического ключа доступа.secret_key
— значение секретного ключа доступа.bucket
— имя бакета.acl
— параметры управления доступом ACL.website
— параметры веб-сайта:index_document
— абсолютный путь к файлу главной страницы сайта. Обязательный параметр.error_document
— абсолютный путь к файлу, который будет отображаться пользователю при ошибках 4xx. Необязательный параметр.
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
- Если в конфигурации нет ошибок, выполните команду:
terraform apply
- Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
.
Чтобы настроить хостинг статического сайта, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API upload.
Переадресация всех запросов
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, для которого хотите настроить переадресацию всех запросов. - На панели слева выберите
Настройки. - Выберите вкладку Веб-сайт.
- В разделе Переадресация укажите:
- Доменное имя хоста, на который будут перенаправляться все запросы к бакету.
- (Опционально) Протокол, если указанный хост принимает запросы строго по определенному протоколу.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для настройки переадресации всех запросов:
yc storage bucket update --help
-
Создайте файл с настройками переадресации в формате JSON. Например:
{ "redirectAllRequests": { "protocol": "PROTOCOL_HTTP", "hostname": "example.com" } }
Где:
protocol
— протокол передачи данных:PROTOCOL_HTTP
илиPROTOCOL_HTTPS
. По умолчанию используется протокол из исходного запроса.hostname
— доменное имя хоста, на который будут перенаправляться все запросы к текущему бакету.
-
Выполните следующую команду:
yc storage bucket update --name <имя_бакета> \ --website-settings-from-file <путь_к_файлу>
Где:
--name
— имя бакета.--website-settings-from-file
— путь к файлу с настройками переадресации.
Результат:
name: my-bucket folder_id: b1gjs8dck8bv******** default_storage_class: STANDARD versioning: VERSIONING_SUSPENDED max_size: "10737418240" acl: {} created_at: "2022-12-14T08:42:16.273717Z"
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы настроить переадресацию всех запросов:
-
Откройте файл конфигурации Terraform и добавьте параметр
redirect_all_requests_to
в описание ресурсаyandex_storage_bucket
:... resource "yandex_storage_bucket" "test" { access_key = "<идентификатор_статического_ключа>" secret_key = "<секретный_ключ>" bucket = "<имя_бакета>" acl = "public-read" website { index_document = "<абсолютный_путь_к_файлу_главной_страницы_сайта>" error_document = "<абсолютный_путь_к_файлу_ошибок>" redirect_all_requests_to = "<имя_хоста>" } } ...
Где:
access_key
— идентификатор статического ключа доступа.secret_key
— значение секретного ключа доступа.bucket
— имя бакета.acl
— параметры управления доступом ACL.website
— параметры веб-сайта:index_document
— абсолютный путь к файлу главной страницы сайта. Обязательный параметр.error_document
— абсолютный путь к файлу, который будет отображаться пользователю при ошибках 4xx. Необязательный параметр.redirect_all_requests_to
— доменное имя хоста, на который будут перенаправляться все запросы к текущему бакету. Вы можете указать префикс протокола (http://
илиhttps://
). По умолчанию используется протокол из исходного запроса.
Более подробную информацию о параметрах ресурса
yandex_storage_bucket
в Terraform см. в документации провайдера . -
Проверьте конфигурацию командой:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминал слово
yes
и нажмите Enter.Проверить настройку переадресации запросов можно в консоли управления
.
Чтобы настроить переадресацию всех запросов к бакету, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API upload.
Переадресация запросов с HTTP на HTTPS включается автоматически после настройки доступа к бакету по HTTPS. Дополнительных настроек для такой переадресации не требуется.
Условная переадресация запросов
Используя правила маршрутизации можно перенаправлять запросы в соответствии с префиксами имен объектов или HTTP-кодами ответов. Вы можете перенаправить на другую веб-страницу запрос к удаленному объекту или перенаправить запросы, возвращающие ошибку.
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, для которого хотите настроить условную переадресацию запросов. - На панели слева выберите
Настройки. - Выберите вкладку Веб-сайт.
- В разделе Хостинг в блоке Переадресация нажмите кнопку Добавить правило переадресации.
- В блоке Условие укажите как минимум одно условие переадресации:
- Код ответа — HTTP-код, которым Object Storage должен был бы ответить на запрос без переадресации.
- Начало ключа — начало ключа объекта в запросе.
- В блоке Переадресация задайте параметры переадресации:
- Протокол, по которому должен быть отправлен переадресованный запрос.
- Доменное имя хоста, на который должны перенаправляться запросы, удовлетворившие условию.
- Код ответа для определения типа редиректа.
- Заменять ключ — Не заменять, Весь ключ или Только начало, указанное в условии.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для настройки условной переадресации запросов:
yc storage bucket update --help
-
Создайте файл с настройками условной переадресации в формате JSON. Например:
{ "routingRules": [ { "condition": { "httpErrorCodeReturnedEquals": "404", "keyPrefixEquals": "key" }, "redirect": { "hostname": "example.com", "httpRedirectCode": "301", "protocol": "PROTOCOL_HTTP", "replaceKeyPrefixWith": "prefix", "replaceKeyWith": "key" } } ] }
Где:
-
condition
— условие, при котором выполняется перенаправление:httpErrorCodeReturnedEquals
— HTTP-код ответа.keyPrefixEquals
— префикс ключа объекта.
-
redirect
— настройки перенаправления:hostname
— доменное имя хоста, на который будут перенаправляться все запросы к текущему бакету.httpRedirectCode
— новый HTTP-код ответа.protocol
— новый протокол передачи данных:PROTOCOL_HTTP
илиPROTOCOL_HTTPS
. По умолчанию используется протокол из исходного запроса.replaceKeyPrefixWith
— новый префикс ключа объекта.replaceKeyWith
— новый ключ объекта.
-
-
Выполните следующую команду:
yc storage bucket update --name <имя_бакета> \ --website-settings-from-file <путь_к_файлу>
Где:
--name
— имя бакета.--website-settings-from-file
— путь к файлу с настройками условной переадресации.
Результат:
name: my-bucket folder_id: b1gjs8dck8bv******** default_storage_class: STANDARD versioning: VERSIONING_SUSPENDED max_size: "10737418240" acl: {} created_at: "2022-12-14T08:42:16.273717Z"
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы настроить условную переадресацию запросов:
-
Откройте файл конфигурации Terraform и добавьте параметр
routing_rules
в описание бакета:... resource "yandex_storage_bucket" "test" { access_key = "<идентификатор_статического_ключа>" secret_key = "<секретный_ключ>" bucket = "<имя_бакета>" acl = "public-read" website { index_document = "<абсолютный_путь_к_файлу_главной_страницы_сайта>" error_document = "<абсолютный_путь_к_файлу_ошибок>" routing_rules = <<EOF [ { "Condition": { "KeyPrefixEquals": "<префикс_ключа_объекта>", "HttpErrorCodeReturnedEquals": "<HTTP-код_ответа>" }, "Redirect": { "Protocol": "<новая_схема>", "HostName": "<новое_доменное_имя>", "ReplaceKeyPrefixWith": "<новый_префикс_ключа_объекта>", "ReplaceKeyWith": "<новый_ключ_объекта>", "HttpRedirectCode": "<новый_HTTP-код_ответа>" } }, ... ] EOF } } ...
Где:
access_key
— идентификатор статического ключа доступа.secret_key
— значение секретного ключа доступа.bucket
— имя бакета.acl
— параметры управления доступом ACL.website
— параметры веб-сайта:index_document
— абсолютный путь к файлу главной страницы сайта. Обязательный параметр.error_document
— абсолютный путь к файлу, который будет отображаться пользователю при ошибках 4xx. Необязательный параметр.routing_rules
— правила переадресации запросов в формате JSON. В поляхCondition
иRedirect
каждого правила должно быть как минимум по одной пареключ — значение
. Подробнее о поддерживаемых полях см. в схеме данных соответствующего метода API (вкладка Для условной переадресации запросов).
Более подробную информацию о параметрах ресурса
yandex_storage_bucket
в Terraform см. в документации провайдера . -
Проверьте конфигурацию командой:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминал слово
yes
и нажмите Enter.Проверить настройку условной переадресации запросов можно в консоли управления
.
Чтобы настроить условную переадресацию запросов к бакету, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API upload.
Переадресация запросов с HTTP на HTTPS включается автоматически после настройки доступа к бакету по HTTPS. Дополнительных настроек для такой переадресации не требуется.