---
title: 'Создать правило для HTTP- или HTTPS-трафика'
sidebar_label: 'Создать правило для HTTP- или HTTPS-трафика'
sidebar_position: 2
description: 'Как создать правило для HTTP- или HTTPS-трафика и настроить в нем HTTP-политики'
---

import Formbricks from '@theme/MDXComponents/Formbricks'

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from 'docs-kit/components'
import MoreVerticalIcon from 'docs-kit/icons/more-vertical'

# Создать правило для HTTP- или HTTPS-трафика

<Tabs queryString="create-rule-http-https">
  <TabItem value="panel" default>
    <TabItemLabel>
      Панель управления
    </TabItemLabel>

    1. В [панели управления](https://my.selectel.ru/vpc/default/lbaas/load-balancers/) в верхнем меню нажмите **Продукты** и выберите **Облачные серверы**.

    2. Перейдите в раздел **Балансировщики** → вкладка **Балансировщики**.

    3. Откройте страницу балансировщика.

    4. Нажмите **Создать правило**.

    5. Выберите протокол приема трафика — HTTP или HTTPS.

    6. Для выбранного протокола будет автоматически выбран стандартный порт, на котором балансировщик будет слушать трафик, — измените его при необходимости.

    7. Опционально: введите разрешенные CIDR — IP-адреса, с которых балансировщик будет принимать трафик с выбранным протоколом и портом. Можно ввести подсеть в формате CIDR или одиночный IP-адрес с маской `/32`. Если вы оставите поле пустым, балансировщик будет принимать трафик с любых IP-адресов. Вы можете [указать разрешенные IP-адреса в правиле](/cloud-servers/load-balancers/manage/limit-access-to-balancer.mdx#specify-allowed-cidrs-in-rule) после создания балансировщика.

       Если поле отсутствует, в сети балансировщика выключена [фильтрация трафика (port security)](/cloud-servers/cloud-networks/about-networks.mdx#traffic-filtering-port-security).

    8. Если вы выбрали HTTPS-протокол, укажите сертификат для терминации HTTPS-трафика на балансировщике — выберите сертификат из менеджера секретов или загрузите новый. Подробнее в инструкции [TLS(SSL)-сертификаты балансировщика нагрузки](/cloud-servers/load-balancers/manage/ssl-certificates.mdx).

    9. Выберите целевую группу по умолчанию или [создайте новую целевую группу](/cloud-servers/load-balancers/target-groups/create-target-group.mdx) с протоколом HTTP. На целевую группу по умолчанию будет направляться трафик, который не подходит под [HTTP-политики](/cloud-servers/load-balancers/about-load-balancers.mdx#http-policies). Чтобы отбрасывать трафик, не попавший под HTTP-политики, выберите **Без целевой группы**.

    10. Отметьте [заголовки HTTP-запросов](/cloud-servers/load-balancers/about-load-balancers.mdx#http-request-headers), которые будут передаваться серверам.

    11. Опционально: создайте [HTTP-политики](/cloud-servers/load-balancers/about-load-balancers.mdx#http-policies):

        11.1.  Нажмите **Добавить новую политику**.

        11.2.  Выберите параметр, по которому будет проверяться запрос:

        * `HOSTNAME` — для проверки доменного имени;
        * `PATH` — для проверки пути.

        11.3.  Выберите тип совпадения с контрольным значением:

        * `EQUAL TO` — совпадает;
        * `STARTS WITH` — начинается с;
        * `ENDS WITH` — заканчивается на;
        * `CONTAINS` — содержит;
        * `REGEX` — регулярное выражение.

        11.4.  Введите контрольное значение для проверки. Если на шаге 11.3 вы выбрали условие `REGEX`, введите регулярное выражение.

        11.5.  Опционально: чтобы добавить в политику еще одно условие, нажмите **Новое условие** и настройте его. Если в политике несколько условий, то для попадания под политику запрос должен соответствовать каждому из них.

        11.6.  Укажите, куда нужно перенаправить подходящий запрос:

        * **Направить на целевую группу** — выберите целевую группу или [создайте новую](/cloud-servers/load-balancers/target-groups/create-target-group.mdx) с протоколом HTTP;
        * **Редирект на URL** — введите целевой URL, который будет полностью заменять URL запросов, включая протокол, доменное имя, путь и параметры запроса;
        * **Редирект на префикс URL** — введите часть URL, на которую нужно заменять протокол и доменное имя в URL запросов. Например, если ввести `https://example.com/new`, то запрос на `https://example.com/api` будет переадресован на `https://example.com/new/api`

        Чтобы не принимать запросы, подходящие под политику, выберите **Отклонить трафик**.

        11.7. Введите имя политики или оставьте сформированное по умолчанию.

        11.8. Нажмите **Добавить**.

        11.9. Опционально: чтобы добавить еще одну политику, нажмите **Добавить новую политику** и настройте ее.

    12. Опционально: измените [настройки соединений](/cloud-servers/load-balancers/about-load-balancers.mdx#connection-settings), для этого откройте блок **Расширенные настройки правила** и укажите:

        * для входящих запросов на балансировщик — укажите таймаут соединения и максимум соединений;
        * для запросов от балансировщика к серверам — укажите таймаут соединения, таймаут неактивности и таймаут ожидания TCP-пакетов.

    13. Нажмите **Создать**.
  </TabItem>

  <TabItem value="openstack">
    <TabItemLabel>
      OpenStack CLI
    </TabItemLabel>

    1. [Откройте OpenStack CLI](/cloud-servers/tools/openstack-cli/).

    2. Создайте правило для балансировщика:

       ```bash
       openstack loadbalancer listener create \
         --name <listener_name> \
         --protocol <protocol> \
         --protocol-port <port> \
         [--allowed-cidr <allowed_cidr>] \
         --default-tls-container=<certificate_uuid> \
         --default-pool <default_pool> \
         <loadbalancer>
       ```

       Укажите:

       * `<listener_name>` — имя правила;
       * `<protocol>` — название протокола, HTTP или TERMINATED\_HTTPS;
       * `<port>` — номер порта;
       * опционально: `--allowed-cidr <allowed_cidr>` — IP-адрес, с которого разрешено принимать трафик, где `<allowed_cidr>` — подсеть в формате CIDR или одиночный IP-адрес с маской `/32`. Если нужно указать несколько адресов, каждый укажите в отдельном параметре `--allowed-cidr`. Чтобы ограничение работало, в сети балансировщика должна быть включена [фильтрация трафика (port security)](/cloud-servers/cloud-networks/about-networks.mdx#traffic-filtering-port-security). Вы можете [указать разрешенные IP-адреса в правиле](/cloud-servers/load-balancers/manage/limit-access-to-balancer.mdx#specify-allowed-cidrs-in-rule) после создания балансировщика;
       * `--default-tls-container=<certificate_uuid>` — ID TLS(SSL)-сертификата для терминации HTTPS-трафика на балансировщике. Укажите, если выбрали протокол `TERMINATED_HTTPS`. Можно скопировать в [панели управления](https://my.selectel.ru/certificates/): в верхнем меню нажмите **Продукты** → **Менеджер сертификатов** → в меню <MoreVerticalIcon /> сертификата выберите **Скопировать UUID**. Подробнее о [TLS(SSL)-сертификатах балансировщика нагрузки](/cloud-servers/load-balancers/manage/ssl-certificates.mdx);
       * опционально: `--default-pool <default_pool>` —  ID или имя целевой группы по умолчанию, куда будет направляться трафик, не попавший под [HTTP-политики](/cloud-servers/load-balancers/about-load-balancers.mdx#http-policies) в правиле. Если не указать параметр, не попавший под политики трафик будет отбрасываться. Список групп можно посмотреть с помощью команды `openstack loadbalancer pool list`. Если у вас нет подходящей целевой группы, [создайте ее](/cloud-servers/load-balancers/target-groups/create-target-group.mdx);
       * `<loadbalancer>` — ID или имя балансировщика нагрузки. Список можно посмотреть с помощью команды `openstack loadbalancer list`.

    3. Создайте [HTTP-политику](/cloud-servers/load-balancers/about-load-balancers.mdx#http-policies) в правиле:

       ```bash
       openstack loadbalancer l7policy create \
         --action <action> \
         [--redirect-url <url> | --redirect-prefix <prefix_url> | --redirect-pool <pool> ]
         --position <position> \
         --name <policy_name> \
         <listener_name>
       ```

       Укажите:

       * `<action>` — действие для балансировки трафика:

         * `REDIRECT_TO_URL` — полностью заменять URL запроса, включая протокол, доменное имя, путь и параметры;
         * `REDIRECT_PREFIX` — заменять протокол и доменное имя в URL запроса;
         * `REDIRECT_TO_POOL` — направлять на целевую группу,
         * `REJECT` — отклонять;

       * `<policy_name>` — имя L7-политики;

       * куда нужно направить трафик:

         * `--redirect-url <url>` — полный URL для перенаправления. Укажите, если выбрано действие `REDIRECT_TO_URL`;
         * `--redirect-prefix <prefix_url>` — префикс URL, на который нужно заменить протокол и домен в запросе, например `https://example.com`. Укажите, если выбрано действие `REDIRECT_PREFIX`;
         * `--redirect-pool <pool>` — ID или имя целевой группы. Укажите, если выбрано действие `REDIRECT_TO_POOL`. Список можно посмотреть с помощью команды `openstack loadbalancer pool list`. Если у вас еще нет целевой группы, [создайте ее](/cloud-servers/load-balancers/target-groups/create-target-group.mdx).

       * `--position <position>` — позиция политики в правиле. Укажите, если в правиле будет несколько политик с одинаковым действием, политика с позицией `1` применится первой из них;

       * `<listener_name>` — имя правила, которое вы создали на шаге 2.

    4. Создайте условие в HTTP-политике:

       ```bash
       openstack loadbalancer l7rule create \
         --compare-type <compare_type> \
         --type <type> \
         --value <value> \
         <policy_name>
       ```

       Укажите:

       * `<compare_type>` — тип совпадения с контрольным значением:

         * `EQUAL TO` — совпадает;
         * `STARTS WITH` — начинается с;
         * `ENDS WITH` — заканчивается на;
         * `CONTAINS` — содержит;
         * `REGEX` — регулярное выражение;
       * `<type>` — параметр в запросе для проверки: `HOST_NAME`, `PATH`, `COOKIE`, `FILE_TYPE`, `HEADER`;
       * `<value>` — контрольное значение;
       * `<policy_name>` — имя L7-политики, которую вы создали на шаге 3.
  </TabItem>
</Tabs>

<Formbricks />
