Создать HTTP-роутер для HTTP-трафика
Чтобы создать HTTP-роутер и добавить в него маршрут:
-
В консоли управления
выберите каталог, в котором будет создаваться HTTP-роутер. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
HTTP-роутеры. -
Нажмите кнопку Создать HTTP-роутер.
-
Введите имя HTTP-роутера.
-
В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост.
-
Введите имя хоста.
-
(Опционально) В поле Профиль безопасности выберите профиль безопасности сервиса Yandex Smart Web Security.
-
Нажмите кнопку Добавить маршрут.
-
Введите Имя маршрута.
-
В поле Путь выберите одну из опций:
Совпадает с
и укажите путь/
— для маршрутизации всех запросов совпадающих с указанным путем.Начинается с
— для маршрутизации всех запросов с определенным началом.Регулярное выражение
— для маршрутизации всех запросов, удовлетворяющих регулярному выражению стандарта RE2 .
-
В списке Методы HTTP выберите нужные методы.
-
В поле Действие выберите одну из опций:
Маршрутизация
,Перенаправление
илиОтвет
. В зависимости от выбранной опции:Маршрутизация
:- В поле Группа бэкендов выберите имя группы бэкендов из того же каталога, в котором создаете HTTP-роутер.
- (Опционально) В поле Замена пути или начала укажите, куда HTTP-роутер должен перенаправлять трафик. Если в поле Путь вы выбрали опцию
Совпадает с
, путь будет полностью заменен. Если была выбрана опцияНачинается с
, будет заменено только начало. - (Опционально) В поле Замена заголовка Host выберите одну из опций:
none
— замена не происходит.rewrite
— происходит замена на указанное значение.auto
— происходит автоматическая замена на адрес целевой ВМ.
- (Опционально) В поле Таймаут, с укажите максимальное время, на которое может быть установлено соединение.
- (Опционально) В поле Таймаут простоя, с укажите максимальное время, в течение которого соединение может простаивать без передачи данных.
- (Опционально) В поле Допустимые значения заголовка Upgrade укажите список протоколов, на которые группа бэкендов может перейти в рамках TCP-соединения по запросу клиента.
- (Опционально) Выберите опцию WebSocket, если вы хотите использовать протокол WebSocket.
Перенаправление
:- В поле Код состояния HTTP выберите код, по которому будет осуществляться перенаправление.
- (Опционально) В поле Замена пути или начала укажите, куда HTTP-роутер должен перенаправлять трафик. Если в поле Путь вы выбрали опцию
Совпадает с
, путь будет полностью заменен. Если была выбрана опцияНачинается с
, будет заменено только начало. - (Опционально) Выберите опцию Удалить query-параметры.
- (Опционально) Выберите опцию Изменить схему.
- (Опционально) Выберите опцию Изменить хост и укажите новый хост.
- (Опционально) Выберите опцию Изменить порт и укажите новый порт.
Ответ
:- В поле Код состояния HTTP выберите код, по которому будет осуществляться ответ.
- В поле Тело ответа нажмите кнопку Выбрать и в открывшемся окне:
- Выберите Способ указания ответа: Текст или Файл.
- В зависимости от выбранного способа прикрепите файл или укажите текст ответа.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания HTTP-роутера:
yc alb http-router create --help
-
Выполните команду:
yc alb http-router create <имя_HTTP-роутера>
Результат:
id: a5dcsselagj4******** name: test-http-router folder_id: aoerb349v3h4******** created_at: "2021-02-11T21:04:59.438292069Z"
-
Посмотрите описание команды CLI для создания виртуального хоста:
yc alb virtual-host create --help
-
Создайте виртуальный хост, указав имя HTTP-роутера и настройки виртуального хоста:
yc alb virtual-host create <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --authority your-domain.foo.com \ --modify-request-header name=Accept-Language,append=ru-RU \ --security-profile-id <идентификатор_профиля_безопасности>
Где:
--http-router-name
— имя HTTP-роутера.--authority
— домены для заголовковHost
иauthority
, которые будут связаны с этим виртуальным хостом. Поддерживаются символы подстановки, например*.foo.com
или*-bar.foo.com
.--modify-request-header
— настройки модификации заголовка запроса:name
— имя модифицируемого заголовка.append
— строка, которая будет добавлена к значению заголовка.
--security-profile-id
— (опционально) идентификатор профиля безопасности сервиса Yandex Smart Web Security.
Результат:
name: test-virtual-host authority: - your-domain.foo.com modify_request_headers: - name: Accept-Language append: ru-RU
-
Посмотрите описание команды CLI для добавления маршрута:
yc alb virtual-host append-http-route --help
-
Добавьте маршрут, указав идентификатор или имя HTTP-роутера и параметры маршрутизации:
yc alb virtual-host append-http-route <имя_маршрута> \ --virtual-host-name <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --prefix-path-match / \ --backend-group-name <имя_группы_бэкендов> \ --request-timeout <тайм-аут_запроса>s \ --request-idle-timeout <тайм-аут_ожидания_запроса>s
Где:
-
--virtual-host-name
— имя виртуального хоста. -
--http-router-name
— имя HTTP-роутера. -
--prefix-path-match
— параметр для маршрутизации всех запросов с определенным началом. После параметра укажите путь/
.Также, чтобы задать условие для маршрутизации, вы можете использовать параметры:
--exact-path-match
— для маршрутизации всех запросов, совпадающих с указанным путем. После параметра укажите/<путь>/
.--regex-path-match
— для маршрутизации всех запросов, удовлетворяющих регулярному выражению стандарта RE2 . После параметра укажите/<регулярное_выражение>
.
-
--backend-group-name
— имя группы бэкендов. -
--request-timeout
— тайм-аут запроса, в секундах. -
--request-max-timeout
— максимальный тайм-аут ожидания запроса, в секундах.
Подробную информацию о параметрах команды
yc alb virtual-host append-http-route
см. в справочнике CLI.Результат:
done (1s) name: test-virtual-host authority: - your-domain.foo.com routes: - name: test-route http: match: path: prefix_match: / route: backend_group_id: a5d4db973944******** timeout: 2s idle_timeout: 3s modify_request_headers: - name: Accept-Language append: ru-RU
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры HTTP-роутера и виртуального хоста:
resource "yandex_alb_http_router" "tf-router" { name = "<имя_HTTP-роутера>" labels = { tf-label = "tf-label-value" empty-label = "" } } resource "yandex_alb_virtual_host" "my-virtual-host" { name = "<имя_виртуального_хоста>" http_router_id = yandex_alb_http_router.tf-router.id route { name = "<имя_маршрута>" http_route { http_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" timeout = "60s" } } } route_options { security_profile_id = "<идентификатор_профиля_безопасности>" } }
Где:
yandex_alb_http_router
— описание HTTP-роутера:-
name
— имя HTTP-роутера. Формат имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
labels
— метки для HTTP-роутера. Укажите пару ключ-значение.
-
yandex_alb_virtual_host
— описание виртуального хоста:-
name
— имя виртуального хоста. Формат имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
http_router_id
— идентификатор HTTP-роутера. -
route
— описание маршрута HTTP-роутера:name
— имя маршрута.http_route_action
— параметр для указания действия с HTTP-трафиком.backend_group_id
— идентификатор группы бэкэндов.timeout
— максимальный тайм-аут ожидания запроса, в секундах.
-
route_options
— (опционально) дополнительные параметры виртуального хоста:security_profile_id
— идентификатор профиля безопасности сервиса Yandex Smart Web Security.
-
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc alb http-router get <имя_HTTP-роутера>
-
Воспользуйтесь методом REST API create для ресурса HttpRouter или вызовом gRPC API HttpRouterService/Create.