Управлять виртуальными хостами
Виртуальные хосты внутри HTTP-роутеров объединяют маршруты, относящиеся к одному набору доменов — значений заголовков Host
(:authority
) HTTP-запроса. При получении входящего запроса балансировщик по очереди проверяет предикаты маршрутов и выбирает первый, который удовлетворяет запросу.
Создать виртуальный хост
Чтобы создать виртуальный хост:
-
В консоли управления
выберите каталог, в котором вы будете создавать виртуальный хост. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
HTTP-роутеры и выберите HTTP-роутер, в котором вы будете создавать виртуальный хост.При необходимости создайте новый HTTP-роутер.
-
На панели сверху нажмите
Создать виртуальный хост и в открывшемся окне:-
В поле Имя задайте имя создаваемого виртуального хоста. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В поле Authority укажите:
- Для HTTP-трафика — значение заголовка
Host
для HTTP/1.1 или псевдозаголовка:authority
для HTTP/2, по которым будет выбираться виртуальный хост. - Для gRPC-трафика —
*
или IP-адрес балансировщика.
При необходимости воспользуйтесь кнопкой Добавить хост, чтобы задать для виртуального хоста дополнительные значения Authority.
Если значение для поля Authority не задано, на виртуальный хост будет направляться весь трафик (равноценно значению
*
). - Для HTTP-трафика — значение заголовка
-
(Опционально) В поле Профиль безопасности выберите профиль безопасности сервиса Yandex Smart Web Security. Профиль безопасности позволяет настроить фильтрацию входящих запросов и подключить WAF для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности.
-
(Опционально) Включите опции Ограничивать все запросы и/или Ограничивать запросы с одного IP и задайте ограничения на количество запросов, которые виртуальный хост будет обрабатывать за единицу времени.
-
(Опционально) Разверните блок Изменение заголовков, нажмите кнопку Изменить заголовок и настройте HTTP-заголовки
:- В поле Тип выберите, где требуется изменить заголовок:
Запрос
— модифицировать заголовки во входящих запросах — от клиента к балансировщику.Ответ
— модифицировать заголовки исходящих ответов от бэкенда к внешнему клиенту.
- В поле Имя заголовка укажите имя заголовка. Например:
Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п. - В поле Операция выберите действие:
append
— чтобы добавить строку к значению заголовка. Строку, которую требуется добавить, укажите в поле справа.replace
— чтобы полностью заменить значение заголовка. Новое значение заголовка укажите в поле справа.remove
— чтобы удалить заголовок. При этом будут удалены не только значение заголовка, но и сам заголовок.rename
— чтобы изменить имя заголовка. Новое имя заголовка укажите в поле справа. Значение заголовка при этом не изменяется.
При необходимости воспользуйтесь кнопкой Изменить заголовок, чтобы добавить новые строки, если вам требуется изменить одновременно несколько заголовков.
- В поле Тип выберите, где требуется изменить заголовок:
-
(Опционально) Создайте необходимые маршруты для трафика создаваемого виртуального хоста.
-
Нажмите кнопку Создать.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания виртуального хоста:
yc alb virtual-host create --help
-
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router list
Результат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+
-
Создайте виртуальный хост, указав его имя и настройки:
yc alb virtual-host create <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --authority <домен_1>,<домен_2>,...,<домен_n> \ --modify-request-header name=Accept-Language,append=ru-RU \ --modify-response-header name=Accept-Charset,replace=utf-8 \ --rate-limit rps=100,all-requests \ --security-profile-id <идентификатор_профиля_безопасности>
Где:
-
--http-router-name
— имя HTTP-роутера.Вместо имени HTTP-роутера вы можете указать его идентификатор в параметре
--http-router-id
. -
--authority
— список доменов для заголовковHost
для HTTP/1.1 илиauthority
для HTTP/2, которые будут связаны с этим виртуальным хостом. Несколько значений указываются через запятую. Поддерживаются символы подстановки, например*.foo.com
или*-bar.foo.com
. Для gRPC-трафика вы можете указать IP-адрес балансировщика.Необязательный параметр. Если значение не задано, на виртуальный хост будет направляться весь трафик.
-
--modify-request-header
— настройки модификации HTTP-заголовка запроса в формате<свойство>=<значение>
. Возможные свойства:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.rename
— изменить имя заголовка. Значение заголовка при этом не изменяется.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок.
Чтобы изменить несколько HTTP-заголовков в запросе, задайте в команде параметр
--modify-request-header
необходимое количество раз.Необязательный параметр: если не задан, заголовки запроса передаются в бэкенд в неизменном виде.
-
--modify-response-header
— настройки модификации HTTP-заголовка ответа в формате<свойство>=<значение>
. Возможные свойства:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.rename
— изменить имя заголовка. Значение заголовка при этом не изменяется.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок.
Чтобы изменить несколько HTTP-заголовков в ответе, задайте в команде параметр
--modify-response-header
необходимое количество раз.Необязательный параметр: если не задан, заголовки ответа передаются клиенту в неизменном виде.
-
--rate-limit
— ограничение на частоту запросов. Возможные свойства:rps
илиrpm
— количество запросов, которые можно принять в секунду или в минуту.all-requests
— ограничение на все входящие запросы.requests-per-ip
— ограничение на количество запросов для каждого IP-адреса клиента в отдельности.
Для одного виртуального хоста вы можете задать только один вид ограничения: либо свойство
all-requests
, либо —requests-per-ip
.Необязательный параметр: если не задан, ограничение на частоту запросов не применяется.
-
--security-profile-id
— идентификатор профиля безопасности сервиса Yandex Smart Web Security. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. Профили безопасности. Необязательный параметр.
Результат:
name: test-virtual-host authority: - example.com - example.org modify_request_headers: - name: Accept-Language append: ru-RU - name: Accept-Charset replace: utf-8 route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100"
-
Подробнее о команде alb virtual-host create
см. в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры виртуального хоста. С помощью Terraform вы можете создавать виртуальные хосты с разными типами маршрутов:
HTTPgRPCresource "yandex_alb_virtual_host" "my-virtual-host" { name = "<имя_виртуального_хоста>" http_router_id = "<идентификатор_HTTP-роутера>" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } route { name = "<имя_маршрута>" disable_security_profile = true|false http_route { http_match { http_method = ["<HTTP-метод_1>","<HTTP-метод_2>",...,"<HTTP-метод_n>"] path { prefix = "<префикс_пути_запроса>/" # или exact = "<путь_запроса>" # или regex = "<регулярное_выражение>" } } http_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" host_rewrite = "<значение_заголовка_Host>" timeout = "<таймаут_соединения>s" idle_timeout = "<таймаут-простоя>s" prefix_rewrite = "<новый_префикс_пути_запроса>/" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } } } } authority = ["<домен_1>","<домен_2>",...,"<домен_n>"] modify_request_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } modify_response_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } route_options { security_profile_id = "<идентификатор_профиля_безопасности>" } }
Где:
-
yandex_alb_virtual_host
— описание виртуального хоста:-
name
— имя виртуального хоста. Формат имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
http_router_id
— идентификатор HTTP-роутера. -
rate_limit
— (опционально) ограничение частоты запросов для всего виртуального хоста.-
all_requests
— (опционально) ограничение всех запросов в секунду или в минуту:per_second
— максимальное количество входящих запросов, которые могут поступать на виртуальный хост за одну секунду.per_minute
— максимальное количество входящих запросов, которые могут поступать на виртуальный хост за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip
— (опционально) дополнительное ограничение запросов для каждого IP-адреса в секунду или в минуту:per_second
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать на виртуальный хост за одну секунду.per_minute
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать на виртуальный хост за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них.
-
-
route
— описание маршрута виртуального хоста:name
— имя маршрута.disable_security_profile
— (опционально) опция отключения профиля безопасности сервиса Yandex Smart Web Security. Возможные значения:true
(профиль отключен) илиfalse
(профиль включен). По умолчанию профиль безопасности включен (значениеfalse
).
-
http_route
— описание маршрута для HTTP-трафика:-
http_match
— (опционально) параметр для фильтрации входящих HTTP-запросов:-
http_method
— (опционально) список HTTP-методов , запросы с которыми будут маршрутизироваться. По умолчанию маршрутизируются запросы с любыми методами. -
path
— (опционально) параметры для фильтрации пути входящего запроса:exact
— маршрутизировать запросы, путь в которых идентичен заданному пути. Например, чтобы маршрутизировать все запросы, укажите путь/
.prefix
— маршрутизировать запросы, путь в которых начинается с заданного префикса.regex
— маршрутизировать запросы, путь в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:[a-z]{10}[0-9]{3}\/
.
Параметры
exact
,prefix
иregex
— взаимоисключающие: вы можете использовать только один из них.
-
-
http_route_action
— параметр для указания действия с HTTP-трафиком.backend_group_id
— идентификатор группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых создается маршрут.host_rewrite
— (опционально) замена заголовка Host в запросе на указанное значение. Вместо параметраhost_rewrite
вы можете указать параметрauto_host_rewrite
— в этом случае заголовок Host в запросе автоматически будет заменяться на адрес целевой виртуальной машины.timeout
— (опционально) максимальное время, на которое может быть установлено соединение, в секундах. Значение по умолчанию — 60 секунд.idle_timeout
— (опционально) максимальное время keep-alive, в течение которого соединение может простаивать без передачи данных. Если не задано, соединение без передачи данных будет сразу разрываться.prefix_rewrite
— (опционально) значение, на которое будет заменен путь или часть пути запроса, указанные в параметреpath
.-
rate_limit
— (опционально) параметр для ограничения количества запросов за единицу времени:-
all_requests
— (опционально) ограничение на все входящие запросы:per_second
— максимальное количество входящих запросов, которые могут поступать в маршрут за одну секунду.per_minute
— максимальное количество входящих запросов, которые могут поступать в маршрут за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip
— (опционально) ограничение на входящие запросы с одного IP-адреса:per_second
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну секунду.per_minute
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них.
-
-
-
authority
— домены для заголовковHost
для HTTP/1.1 илиauthority
для HTTP/2, которые будут связаны с этим виртуальным хостом. Поддерживаются символы подстановки, например*.foo.com
или*-bar.foo.com
. Для gRPC-трафика вы можете указать*
или IP-адрес балансировщика.Необязательный параметр. Если значение не задано, на виртуальный хост будет направляться весь трафик.
-
modify_request_headers
— настройки модификации HTTP-заголовков запроса. Возможные параметры:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок. Возможные значения:true
илиfalse
.
Необязательный параметр: если не задан, заголовки запроса передаются в бэкенд в неизменном виде.
-
modify_response_headers
— настройки модификации HTTP-заголовков ответа. Возможные параметры:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок. Возможные значения:true
илиfalse
.
Необязательный параметр: если не задан, заголовки ответа передаются клиенту в неизменном виде.
-
route_options
— (опционально) дополнительные параметры виртуального хоста:security_profile_id
— идентификатор профиля безопасности. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности.
-
resource "yandex_alb_virtual_host" "my-virtual-host" { name = "<имя_виртуального_хоста>" http_router_id = "<идентификатор_HTTP-роутера>" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } route { name = "<имя_маршрута>" disable_security_profile = true|false grpc_route { grpc_match { fqmn { prefix = "/<префикс_FQMN_запроса>" # или exact = "<FQMN_запроса>" # или regex = "<регулярное_выражение>" } } grpc_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" host_rewrite = "<значение_заголовка_Host>" max_timeout = "<таймаут_соединения>s" idle_timeout = "<таймаут-простоя>s" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } } } } authority = ["<домен_1>","<домен_2>",...,"<домен_n>"] modify_request_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } modify_response_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } route_options { security_profile_id = "<идентификатор_профиля_безопасности>" } }
Где:
-
yandex_alb_virtual_host
— описание виртуального хоста:-
name
— имя виртуального хоста. Формат имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
http_router_id
— идентификатор HTTP-роутера. -
rate_limit
— (опционально) ограничение частоты запросов для всего виртуального хоста.-
all_requests
— (опционально) ограничение всех запросов в секунду или в минуту:per_second
— максимальное количество входящих запросов, которые могут поступать на виртуальный хост за одну секунду.per_minute
— максимальное количество входящих запросов, которые могут поступать на виртуальный хост за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip
— (опционально) дополнительное ограничение запросов для каждого IP-адреса в секунду или в минуту:per_second
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать на виртуальный хост за одну секунду.per_minute
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать на виртуальный хост за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них.
-
-
route
— описание маршрута виртуального хоста:name
— имя маршрута.disable_security_profile
— (опционально) опция отключения профиля безопасности сервиса Yandex Smart Web Security. Возможные значения:true
(профиль отключен) илиfalse
(профиль включен). По умолчанию профиль безопасности включен (значениеfalse
).
-
grpc_route
— описание маршрута для gRPC-трафика:-
grpc_match.fqmn
— (опционально) параметр для фильтрации входящих gRPC-запросов по FQMN:exact
— маршрутизировать запросы, FQMN в которых идентичен заданному.prefix
— маршрутизировать запросы, FQMN в которых начинается с заданного префикса. Например, вы можете указать первое слово в имени сервиса:/helloworld
.regex
— маршрутизировать запросы, FQMN в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}
.
Параметры
exact
,prefix
иregex
— взаимоисключающие: вы можете использовать только один из них. -
grpc_route_action
— параметр для указания действия с gRPC-трафиком.backend_group_id
— идентификатор группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых создается маршрут.host_rewrite
— (опционально) замена заголовка Host в запросе на указанное значение. Вместо параметраhost_rewrite
вы можете указать параметрauto_host_rewrite
— в этом случае заголовок Host в запросе автоматически будет заменяться на адрес целевой виртуальной машины.max_timeout
— (опционально) максимальный таймаут ожидания запроса в секундах. Клиент может указать в запросе HTTP-заголовокgrpc-timeout
с меньшим значением таймаута. Значение по умолчанию — 60 секунд.idle_timeout
— (опционально) максимальное время keep-alive, в течение которого соединение может простаивать без передачи данных. Если не задано, соединение без передачи данных будет сразу разрываться.-
rate_limit
— (опционально) параметр для ограничения количества запросов за единицу времени:-
all_requests
— (опционально) ограничение на все входящие запросы:per_second
— максимальное количество входящих запросов, которые могут поступать в маршрут за одну секунду.per_minute
— максимальное количество входящих запросов, которые могут поступать в маршрут за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip
— (опционально) ограничение на входящие запросы с одного IP-адреса:per_second
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну секунду.per_minute
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них.
-
-
-
authority
— домены для заголовковHost
для HTTP/1.1 илиauthority
для HTTP/2, которые будут связаны с этим виртуальным хостом. Поддерживаются символы подстановки, например*.foo.com
или*-bar.foo.com
. Для gRPC-трафика вы можете указать*
или IP-адрес балансировщика.Необязательный параметр. Если значение не задано, на виртуальный хост будет направляться весь трафик.
-
modify_request_headers
— настройки модификации HTTP-заголовков запроса. Возможные параметры:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок. Возможные значения:true
илиfalse
.
Необязательный параметр: если не задан, заголовки запроса передаются в бэкенд в неизменном виде.
-
modify_response_headers
— настройки модификации HTTP-заголовков ответа. Возможные параметры:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок. Возможные значения:true
илиfalse
.
Необязательный параметр: если не задан, заголовки ответа передаются клиенту в неизменном виде.
-
route_options
— (опционально) дополнительные параметры виртуального хоста:security_profile_id
— идентификатор профиля безопасности. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности.
-
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера: yandex_alb_virtual_host
. -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc alb virtual-host get <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера>
-
Воспользуйтесь методом REST API create для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Create.
Изменить виртуальный хост
Чтобы изменить виртуальный хост:
-
В консоли управления
выберите каталог, в котором находится нужный виртуальный хост. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
HTTP-роутеры и выберите HTTP-роутер, в котором находится нужный виртуальный хост. -
На открывшейся странице в секции Виртуальные хосты в блоке с нужным виртуальным хостом нажмите значок
и выберите Редактировать. В открывшемся окне:-
(Опционально) В поле Authority измените заданные настройки и укажите:
- Для HTTP-трафика — значение заголовка
Host
для HTTP/1.1 или псевдозаголовка:authority
для HTTP/2, по которым будет выбираться виртуальный хост. - Для gRPC-трафика —
*
или IP-адрес балансировщика.
При необходимости воспользуйтесь кнопкой Добавить хост, чтобы задать для виртуального хоста дополнительные значения Authority.
Если значение для поля Authority не задано, на виртуальный хост будет направляться весь трафик (равноценно значению
*
). - Для HTTP-трафика — значение заголовка
-
(Опционально) В поле Профиль безопасности выберите профиль безопасности сервиса Yandex Smart Web Security. Профиль безопасности позволяет настроить фильтрацию входящих запросов и подключить WAF для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности.
-
(Опционально) Включите опции Ограничивать все запросы и/или Ограничивать запросы с одного IP и задайте ограничения на количество запросов, которые виртуальный хост будет обрабатывать за единицу времени.
-
(Опционально) Разверните блок Изменение заголовков и настройте модификацию HTTP-заголовков
. Если настроек в блоке еще нет, нажмите кнопку Изменить заголовок, чтобы добавить новую модификацию заголовка:- В поле Тип выберите, где требуется изменить заголовок:
Запрос
— модифицировать заголовки во входящих запросах — от клиента к балансировщику.Ответ
— модифицировать заголовки исходящих ответов от бэкенда к внешнему клиенту.
- В поле Имя заголовка укажите имя заголовка. Например:
Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п. - В поле Операция выберите действие:
append
— чтобы добавить строку к значению заголовка. Строку, которую требуется добавить, укажите в поле справа.replace
— чтобы полностью заменить значение заголовка. Новое значение заголовка укажите в поле справа.remove
— чтобы удалить заголовок. При этом будут удалены не только значение заголовка, но и сам заголовок.rename
— чтобы изменить имя заголовка. Новое имя заголовка укажите в поле справа. Значение заголовка при этом не изменяется.
При необходимости воспользуйтесь кнопкой Изменить заголовок, чтобы добавить новые строки, если вам требуется изменить одновременно несколько заголовков.
- В поле Тип выберите, где требуется изменить заголовок:
-
(Опционально) Создайте необходимые маршруты для трафика создаваемого виртуального хоста.
-
(Опционально) Чтобы изменить порядок маршрутов, нажмите кнопку Сортировать и в открывшемся окне:
- С помощью мышки методом перетаскивания выстройте нужный порядок маршрутов.
- Нажмите кнопку Сохранить.
Примечание
Позднее вы в любой момент сможете изменить порядок маршрутов виртуального хоста.
-
Нажмите кнопку Сохранить.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для изменения виртуального хоста:
yc alb virtual-host update --help
-
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router list
Результат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+
-
Посмотрите список виртуальных хостов в нужном HTTP-роутере, указав его имя или идентификатор соответственно в параметре
--http-router-name
или--http-router-id
:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>
Результат:
+-------------------+-------------+-------------+----------------------+ | NAME | AUTHORITIES | ROUTE COUNT | SECURITY PROFILE ID | +-------------------+-------------+-------------+----------------------+ | my-virtual-host | * | 1 | fevu5fnuk6vf******** | | test-virtual-host | example.com | 2 | fevug3d25bv6******** | +-------------------+-------------+-------------+----------------------+
-
Чтобы изменить виртуальный хост, выполните команду, указав его имя:
yc alb virtual-host update <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --authority <домен_1>,<домен_2>,...,<домен_n> \ --modify-request-header name=Accept-Language,append=ru-RU \ --modify-response-header name=Accept-Charset,replace=utf-8 \ --rate-limit rps=100,all-requests \ --security-profile-id <идентификатор_профиля_безопасности> \ --clear-routes
Где:
-
--http-router-name
— имя HTTP-роутера.Вместо имени HTTP-роутера вы можете передать его идентификатор в параметре
--http-router-id
. -
--authority
— список доменов для заголовковHost
для HTTP/1.1 илиauthority
для HTTP/2, которые будут связаны с этим виртуальным хостом. Несколько значений указываются через запятую. Поддерживаются символы подстановки, например*.foo.com
или*-bar.foo.com
. Для gRPC-трафика вы можете указать IP-адрес балансировщика.Необязательный параметр. Если значение не задано, на виртуальный хост будет направляться весь трафик.
Чтобы удалить заданный для виртуального хоста список доменов, передайте в команде параметр
--clear-authorities
. -
--modify-request-header
— настройки модификации HTTP-заголовка запроса в формате<свойство>=<значение>
. Возможные свойства:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.rename
— изменить имя заголовка. Значение заголовка при этом не изменяется.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок.
Чтобы изменить несколько HTTP-заголовков в запросе, задайте в команде параметр
--modify-request-header
необходимое количество раз.Необязательный параметр: если не задан, заголовки запроса передаются в бэкенд в неизменном виде.
Чтобы очистить все настройки модификации HTTP-заголовка запроса для виртуального хоста, передайте в команде параметр
--clear-request-header-modifications
. -
--modify-response-header
— настройки модификации HTTP-заголовка ответа в формате<свойство>=<значение>
. Возможные свойства:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.rename
— изменить имя заголовка. Значение заголовка при этом не изменяется.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок.
Чтобы изменить несколько HTTP-заголовков в ответе, задайте в команде параметр
--modify-response-header
необходимое количество раз.Необязательный параметр: если не задан, заголовки ответа передаются клиенту в неизменном виде.
Чтобы очистить все настройки модификации HTTP-заголовка ответа для виртуального хоста, передайте в команде параметр
--clear-response-header-modifications
. -
--rate-limit
— ограничение на частоту запросов. Возможные свойства:rps
илиrpm
— количество запросов, которые можно принять в секунду или в минуту.all-requests
— ограничение на все входящие запросы.requests-per-ip
— ограничение на количество запросов для каждого IP-адреса клиента в отдельности.
Для одного виртуального хоста вы можете задать только один вид ограничения: либо свойство
all-requests
, либо —requests-per-ip
.Необязательный параметр: если не задан, ограничение на частоту запросов не применяется.
Чтобы очистить все заданные для виртуального хоста ограничения на количество запросов, передайте в команде параметр
--clear-rate-limit
. -
--security-profile-id
— идентификатор профиля безопасности сервиса Yandex Smart Web Security. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. Профили безопасности. Необязательный параметр.Чтобы отвязать профиль безопасности от виртуального хоста, передайте в параметре пустое значение:
--security-profile-id ""
-
--clear-routes
— параметр, который удаляет все маршруты из виртуального хоста. Необязательный параметр.
Результат:
name: test-virtual-host authority: - example.com modify_request_headers: - name: Accept-Language replace: ru-RU modify_response_headers: - name: Accept-Charset append: utf-8 route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "80"
-
Подробнее о команде yc alb virtual-host update
см. в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле измененные параметры виртуального хоста. С помощью Terraform вы можете создавать виртуальные хосты с разными типами маршрутов:
HTTPgRPCresource "yandex_alb_virtual_host" "my-virtual-host" { name = "<имя_виртуального_хоста>" http_router_id = "<идентификатор_HTTP-роутера>" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } route { name = "<имя_маршрута>" disable_security_profile = true|false http_route { http_match { http_method = ["<HTTP-метод_1>","<HTTP-метод_2>",...,"<HTTP-метод_n>"] path { prefix = "<префикс_пути_запроса>/" # или exact = "<путь_запроса>" # или regex = "<регулярное_выражение>" } } http_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" host_rewrite = "<значение_заголовка_Host>" timeout = "<таймаут_соединения>s" idle_timeout = "<таймаут-простоя>s" prefix_rewrite = "<новый_префикс_пути_запроса>/" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } } } } authority = ["<домен_1>","<домен_2>",...,"<домен_n>"] modify_request_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } modify_response_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } route_options { security_profile_id = "<идентификатор_профиля_безопасности>" } }
Где:
-
yandex_alb_virtual_host
— описание виртуального хоста:-
name
— имя виртуального хоста. Формат имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
http_router_id
— идентификатор HTTP-роутера. -
rate_limit
— (опционально) ограничение частоты запросов для всего виртуального хоста.-
all_requests
— (опционально) ограничение всех запросов в секунду или в минуту:per_second
— максимальное количество входящих запросов, которые могут поступать на виртуальный хост за одну секунду.per_minute
— максимальное количество входящих запросов, которые могут поступать на виртуальный хост за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip
— (опционально) дополнительное ограничение запросов для каждого IP-адреса в секунду или в минуту:per_second
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать на виртуальный хост за одну секунду.per_minute
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать на виртуальный хост за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них.
-
-
route
— описание маршрута виртуального хоста:name
— имя маршрута.disable_security_profile
— (опционально) опция отключения профиля безопасности сервиса Yandex Smart Web Security. Возможные значения:true
(профиль отключен) илиfalse
(профиль включен). По умолчанию профиль безопасности включен (значениеfalse
).
-
http_route
— описание маршрута для HTTP-трафика:-
http_match
— (опционально) параметр для фильтрации входящих HTTP-запросов:-
http_method
— (опционально) список HTTP-методов , запросы с которыми будут маршрутизироваться. По умолчанию маршрутизируются запросы с любыми методами. -
path
— (опционально) параметры для фильтрации пути входящего запроса:exact
— маршрутизировать запросы, путь в которых идентичен заданному пути. Например, чтобы маршрутизировать все запросы, укажите путь/
.prefix
— маршрутизировать запросы, путь в которых начинается с заданного префикса.regex
— маршрутизировать запросы, путь в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:[a-z]{10}[0-9]{3}\/
.
Параметры
exact
,prefix
иregex
— взаимоисключающие: вы можете использовать только один из них.
-
-
http_route_action
— параметр для указания действия с HTTP-трафиком.backend_group_id
— идентификатор группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых создается маршрут.host_rewrite
— (опционально) замена заголовка Host в запросе на указанное значение. Вместо параметраhost_rewrite
вы можете указать параметрauto_host_rewrite
— в этом случае заголовок Host в запросе автоматически будет заменяться на адрес целевой виртуальной машины.timeout
— (опционально) максимальное время, на которое может быть установлено соединение, в секундах. Значение по умолчанию — 60 секунд.idle_timeout
— (опционально) максимальное время keep-alive, в течение которого соединение может простаивать без передачи данных. Если не задано, соединение без передачи данных будет сразу разрываться.prefix_rewrite
— (опционально) значение, на которое будет заменен путь или часть пути запроса, указанные в параметреpath
.-
rate_limit
— (опционально) параметр для ограничения количества запросов за единицу времени:-
all_requests
— (опционально) ограничение на все входящие запросы:per_second
— максимальное количество входящих запросов, которые могут поступать в маршрут за одну секунду.per_minute
— максимальное количество входящих запросов, которые могут поступать в маршрут за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip
— (опционально) ограничение на входящие запросы с одного IP-адреса:per_second
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну секунду.per_minute
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них.
-
-
-
authority
— домены для заголовковHost
для HTTP/1.1 илиauthority
для HTTP/2, которые будут связаны с этим виртуальным хостом. Поддерживаются символы подстановки, например*.foo.com
или*-bar.foo.com
. Для gRPC-трафика вы можете указать*
или IP-адрес балансировщика.Необязательный параметр. Если значение не задано, на виртуальный хост будет направляться весь трафик.
-
modify_request_headers
— настройки модификации HTTP-заголовков запроса. Возможные параметры:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок. Возможные значения:true
илиfalse
.
Необязательный параметр: если не задан, заголовки запроса передаются в бэкенд в неизменном виде.
-
modify_response_headers
— настройки модификации HTTP-заголовков ответа. Возможные параметры:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок. Возможные значения:true
илиfalse
.
Необязательный параметр: если не задан, заголовки ответа передаются клиенту в неизменном виде.
-
route_options
— (опционально) дополнительные параметры виртуального хоста:security_profile_id
— идентификатор профиля безопасности. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности.
-
resource "yandex_alb_virtual_host" "my-virtual-host" { name = "<имя_виртуального_хоста>" http_router_id = "<идентификатор_HTTP-роутера>" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } route { name = "<имя_маршрута>" disable_security_profile = true|false grpc_route { grpc_match { fqmn { prefix = "/<префикс_FQMN_запроса>" # или exact = "<FQMN_запроса>" # или regex = "<регулярное_выражение>" } } grpc_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" host_rewrite = "<значение_заголовка_Host>" max_timeout = "<таймаут_соединения>s" idle_timeout = "<таймаут-простоя>s" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } } } } authority = ["<домен_1>","<домен_2>",...,"<домен_n>"] modify_request_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } modify_response_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } route_options { security_profile_id = "<идентификатор_профиля_безопасности>" } }
Где:
-
yandex_alb_virtual_host
— описание виртуального хоста:-
name
— имя виртуального хоста. Формат имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
http_router_id
— идентификатор HTTP-роутера. -
rate_limit
— (опционально) ограничение частоты запросов для всего виртуального хоста.-
all_requests
— (опционально) ограничение всех запросов в секунду или в минуту:per_second
— максимальное количество входящих запросов, которые могут поступать на виртуальный хост за одну секунду.per_minute
— максимальное количество входящих запросов, которые могут поступать на виртуальный хост за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip
— (опционально) дополнительное ограничение запросов для каждого IP-адреса в секунду или в минуту:per_second
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать на виртуальный хост за одну секунду.per_minute
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать на виртуальный хост за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них.
-
-
route
— описание маршрута виртуального хоста:name
— имя маршрута.disable_security_profile
— (опционально) опция отключения профиля безопасности сервиса Yandex Smart Web Security. Возможные значения:true
(профиль отключен) илиfalse
(профиль включен). По умолчанию профиль безопасности включен (значениеfalse
).
-
grpc_route
— описание маршрута для gRPC-трафика:-
grpc_match.fqmn
— (опционально) параметр для фильтрации входящих gRPC-запросов по FQMN:exact
— маршрутизировать запросы, FQMN в которых идентичен заданному.prefix
— маршрутизировать запросы, FQMN в которых начинается с заданного префикса. Например, вы можете указать первое слово в имени сервиса:/helloworld
.regex
— маршрутизировать запросы, FQMN в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}
.
Параметры
exact
,prefix
иregex
— взаимоисключающие: вы можете использовать только один из них. -
grpc_route_action
— параметр для указания действия с gRPC-трафиком.backend_group_id
— идентификатор группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых создается маршрут.host_rewrite
— (опционально) замена заголовка Host в запросе на указанное значение. Вместо параметраhost_rewrite
вы можете указать параметрauto_host_rewrite
— в этом случае заголовок Host в запросе автоматически будет заменяться на адрес целевой виртуальной машины.max_timeout
— (опционально) максимальный таймаут ожидания запроса в секундах. Клиент может указать в запросе HTTP-заголовокgrpc-timeout
с меньшим значением таймаута. Значение по умолчанию — 60 секунд.idle_timeout
— (опционально) максимальное время keep-alive, в течение которого соединение может простаивать без передачи данных. Если не задано, соединение без передачи данных будет сразу разрываться.-
rate_limit
— (опционально) параметр для ограничения количества запросов за единицу времени:-
all_requests
— (опционально) ограничение на все входящие запросы:per_second
— максимальное количество входящих запросов, которые могут поступать в маршрут за одну секунду.per_minute
— максимальное количество входящих запросов, которые могут поступать в маршрут за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip
— (опционально) ограничение на входящие запросы с одного IP-адреса:per_second
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну секунду.per_minute
— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну минуту.
Параметры
per_second
иper_minute
— взаимоисключающие: вы можете использовать только один из них.
-
-
-
authority
— домены для заголовковHost
для HTTP/1.1 илиauthority
для HTTP/2, которые будут связаны с этим виртуальным хостом. Поддерживаются символы подстановки, например*.foo.com
или*-bar.foo.com
. Для gRPC-трафика вы можете указать*
или IP-адрес балансировщика.Необязательный параметр. Если значение не задано, на виртуальный хост будет направляться весь трафик.
-
modify_request_headers
— настройки модификации HTTP-заголовков запроса. Возможные параметры:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок. Возможные значения:true
илиfalse
.
Необязательный параметр: если не задан, заголовки запроса передаются в бэкенд в неизменном виде.
-
modify_response_headers
— настройки модификации HTTP-заголовков ответа. Возможные параметры:name
— имя модифицируемого заголовка. Например:Host
,User-Agent
,X-Forwarded-For
,Strict-Transport-Security
и т.п.append
— добавить строку к текущему значению заголовка.replace
— полностью заменить текущее значение заголовка.remove
— удалить заголовок. При этом будет удалено не только значение заголовка, но и сам заголовок. Возможные значения:true
илиfalse
.
Необязательный параметр: если не задан, заголовки ответа передаются клиенту в неизменном виде.
-
route_options
— (опционально) дополнительные параметры виртуального хоста:security_profile_id
— идентификатор профиля безопасности. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности.
-
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера: yandex_alb_virtual_host
. -
-
Обновите ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform обновит требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc alb virtual-host get <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера>
-
Воспользуйтесь методом REST API update для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Update.
Удалить виртуальный хост
Чтобы удалить виртуальный хост:
- В консоли управления
выберите каталог, в котором находится нужный виртуальный хост. - В списке сервисов выберите Application Load Balancer.
- На панели слева выберите
HTTP-роутеры и выберите HTTP-роутер, в котором находится нужный виртуальный хост. - На открывшейся странице в секции Виртуальные хосты в блоке с нужным виртуальным хостом нажмите значок
и выберите Удалить. - В открывшемся окне подтвердите удаление.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для удаления виртуального хоста:
yc alb virtual-host delete --help
-
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router list
Результат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+
-
Посмотрите список виртуальных хостов в нужном HTTP-роутере, указав его имя или идентификатор соответственно в параметре
--http-router-name
или--http-router-id
:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>
Результат:
+-------------------+-------------+-------------+----------------------+ | NAME | AUTHORITIES | ROUTE COUNT | SECURITY PROFILE ID | +-------------------+-------------+-------------+----------------------+ | my-virtual-host | * | 1 | fevu5fnuk6vf******** | | test-virtual-host | example.com | 2 | fevug3d25bv6******** | +-------------------+-------------+-------------+----------------------+
-
Чтобы удалить виртуальный хост, выполните команду, указав его имя:
yc alb virtual-host delete <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера>
Где
--http-router-name
— имя HTTP-роутера. Вместо имени HTTP-роутера вы можете передать его идентификатор в параметре--http-router-id
.
Подробнее о команде yc alb virtual-host delete
см. в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы удалить виртуальный хост, созданный с помощью Terraform:
-
Откройте файл конфигураций Terraform и удалите фрагмент с описанием виртуального хоста (ресурс
yandex_alb_virtual_host
).Пример описания виртуального хоста в конфигурации Terraform
resource "yandex_alb_virtual_host" "my-virtual-host" { name = "<имя_виртуального_хоста>" http_router_id = "<идентификатор_HTTP-роутера>" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } route { name = "<имя_маршрута>" disable_security_profile = true|false http_route { http_match { http_method = ["<HTTP-метод_1>","<HTTP-метод_2>",...,"<HTTP-метод_n>"] path { prefix = "<префикс_пути_запроса>/" # или exact = "<путь_запроса>" # или regex = "<регулярное_выражение>" } } http_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" host_rewrite = "<значение_заголовка_Host>" timeout = "<таймаут_соединения>s" idle_timeout = "<таймаут-простоя>s" prefix_rewrite = "<новый_префикс_пути_запроса>/" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } } } } authority = ["<домен_1>","<домен_2>",...,"<домен_n>"] modify_request_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } modify_response_headers { name = "<имя_заголовка>" append = "<добавляемая_в_содержимое_заголовка_строка>" # или replace = "<новое_содержимое_заголовка>" # или remove = true|false } route_options { security_profile_id = "<идентификатор_профиля_безопасности>" } }
-
Обновите ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform обновит требуемые ресурсы. Проверить наличие ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера>
-
Воспользуйтесь методом REST API delete для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Delete.