Настройка виртуальных хостов

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Клиент Cloud с платным аккаунтом и все клиенты Edge для частного облака могут создавать виртуальный хост в организации. Пользователь, создающий виртуальный хост, должен иметь роль администратора организации или специальную роль с разрешениями на изменение виртуального хоста. У пользователей с другими ролями нет разрешения на создание виртуальных хостов.

Посмотрите видео о виртуальных ведущих.

Как создать виртуальный хост

Чтобы создать виртуальный хост, выполните следующие действия: Процедура зависит от того, используете ли вы Cloud или Private Cloud и включаете ли TLS:

  1. Создайте запись DNS и запись CNAME для общедоступного домена.
  2. Если вы включаете TLS на виртуальном хосте:
    1. Создайте и настройте хранилище ключей, следуя инструкциям в статье Хранилища ключей и хранилища доверенных сертификатов.
    2. Загрузите сертификат и ключ в хранилище ключей. Убедитесь, что доменное имя, указанное в сертификате, соответствует псевдониму хоста, который вы хотите использовать для виртуального хоста.
    3. Создайте ссылку на хранилище ключей с помощью интерфейса Edge или API. В ссылке указывается название хранилища ключей и тип ссылки KeyStore. Подробнее о том, как работать с референсами…
    4. Если вы используете двусторонний протокол TLS, создайте хранилище доверенных сертификатов, загрузите сертификат и создайте ссылку на хранилище. Создайте хранилище доверенных сертификатов, следуя инструкциям в разделе Хранилища ключей и хранилища доверенных сертификатов.
  3. Создайте виртуальный хост с помощью API Создать виртуальный хост. Если вы включили TLS, убедитесь, что указали правильную ссылку на хранилище ключей, ссылку на хранилище доверенных сертификатов и псевдоним ключа.
  4. Если у вас есть прокси API, добавьте виртуальный хост в ProxyEndpoint. Виртуальный хост автоматически добавляется ко всем новым прокси API. Подробнее о том, как настроить прокси-сервер API для использования виртуального хоста…

После того как вы обновите прокси-сервер API, чтобы использовать виртуальный хост, и создадите запись DNS и запись CNAME для псевдонима хоста, вы сможете получить доступ к прокси-серверу API, как показано ниже.

https://api.myCompany.com/v1/project-base-path/resource-path

Пример:

https://api.myCompany.com/v1/weather/forecastrss?w=12797282

Как создать виртуальный хост с помощью API или интерфейса

Создать виртуальный хост можно с помощью Edge API или Edge UI.

В большинстве примеров ниже используется Edge API. Чтобы открыть интерфейс для создания, изменения и удаления виртуальных хостов в интерфейсе Edge:

  1. Войдите в аккаунт на странице apigee.com/edge.

    Клиенты Edge для частного облака используют http://ms-ip:9000 (локально), где ms-ip – это IP-адрес или DNS-имя узла сервера управления.

  2. На панели навигации слева выберите Admin (Администратор) > Virtual Hosts (Виртуальные хосты).
  3. Выберите среду, например prod или test.
    Отображаются виртуальные хосты, определенные для среды.
  4. Нажмите + Виртуальный хост, чтобы создать виртуальный хост, или выберите название существующего виртуального хоста, чтобы изменить его.

Как создать виртуальный хост для HTTP

Клиенты Edge for Private Cloud могут создать виртуальный хост с помощью HTTP.

Чтобы создать виртуальный хост, который не поддерживает TLS, создайте XML-объект, определяющий виртуальный хост. Например, следующий объект XML определяет виртуальный хост, использующий протокол HTTP:

<VirtualHost name="myVHost">
   <HostAliases>
     <HostAlias>api.myCompany.com</HostAlias>
   </HostAliases>
   <Interfaces/>
   <Port>80</Port>
</VirtualHost>

В этом определении:

  • Укажите название как myVHost. Используйте это название, чтобы ссылаться на виртуальный хост в прокси-сервере API или вызове API.
  • Укажите псевдоним хоста как api.myCompany.com. Это общедоступный домен, используемый для доступа к вашим API, как определено в записи DNS и CNAME.
  • Укажите номер порта: 80. Если этот параметр не указан, по умолчанию используется порт 443.
  • В виртуальном хосте можно задать дополнительные свойства. Справочную информацию обо всех свойствах можно найти в разделе Свойства виртуального хоста.

Если у вас есть прокси API, добавьте виртуальный хост в элемент <HTTPConnection> в конечной точке прокси. Виртуальный хост автоматически добавляется ко всем новым прокси API. Подробнее о том, как настроить прокси-сервер API для использования виртуального хоста… Если вы создаете новый прокси-сервер API, который не должен быть доступен через определенный виртуальный хост, вам нужно изменить прокси-сервер API, чтобы удалить этот виртуальный хост из его ProxyEndpoint.

После этого вы сможете получить доступ к прокси-серверу API через виртуальный хост, отправив запрос по следующему адресу:

http://api.myCompany.com/proxy-base-path/resource-path
https://api.myCompany.com/proxy-base-path/resource-path

Создайте виртуальный хост с помощью API Create a Virtual Host (Создать виртуальный хост):

curl -X POST -H "Content-Type:application/xml" \
  http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \
  -d '<VirtualHost name="myVHost">
        <HostAliases>
            <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>80</Port>
    </VirtualHost>' \
  -u sysAdminEmail:password
.

Создание виртуального хоста для одностороннего протокола TLS

В приведенном ниже объекте XML определяется виртуальный хост для одностороннего протокола TLS:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

В этом определении вы включаете TLS, задавая для элемента <Enable> значение true, и используете элементы <KeyStore> и <KeyAliase>, чтобы указать хранилище ключей и псевдоним ключа, используемые подключением TLS.

Подробнее о TLS/SSL…

Как указать имя хранилища ключей и хранилища доверенных сертификатов в виртуальном хосте

При настройке виртуального хоста для поддержки TLS вы указываете хранилище ключей, используя ссылку. Ссылка – это переменная, которая содержит название хранилища ключей или доверенного хранилища, а не указывает его напрямую, как показано ниже:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>

Преимущество использования ссылки в том, что вы можете изменить ее значение, чтобы изменить хранилище ключей, используемое виртуальным хостом. Обычно это делается потому, что срок действия сертификата в текущем хранилище ключей скоро истечет. Изменение значения ссылки не требует перезапуска маршрутизатора Edge. Подробнее о том, как работать с объектами…

Вы можете использовать только ссылку на хранилище ключей и хранилище доверенных сертификатов, но не на псевдоним. При изменении ссылки на хранилище ключей убедитесь, что псевдоним сертификата совпадает с псевдонимом в старом хранилище.

Ограничения на использование ссылок на хранилища ключей и доверенные хранилища

При использовании ссылок на хранилища ключей и доверенные хранилища необходимо учитывать следующее ограничение:

  • Ссылки на хранилище ключей и хранилище доверенных сертификатов можно использовать в виртуальных хостах, только если вы поддерживаете SNI и завершаете SSL на маршрутизаторах Apigee.
  • Если перед маршрутизаторами Apigee установлен балансировщик нагрузки, на котором завершается TLS-подключение, то в виртуальных хостах нельзя использовать ссылки на хранилища ключей и доверия.

Как создать виртуальный хост для двустороннего протокола TLS

Чтобы включить двусторонний протокол TLS, задайте для элемента <ClientAuthEnabled> значение true и укажите хранилище доверенных сертификатов, используя ссылку с элементом <TrustStore>. Хранилище доверенных сертификатов содержит издателя сертификата клиента и цепочку сертификатов центра сертификации, что необходимо. Клиент также должен быть правильно настроен для двустороннего протокола TLS.

Чтобы создать виртуальный хост для двустороннего протокола TLS, создайте XML-объект, определяющий виртуальный хост:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <TrustStore>ref://myTestTruststoreRef</TrustStore>
    </SSLInfo>
</VirtualHost>

В этом определении:

  • Включите двусторонний протокол TLS, задав для параметра <ClientAuthEnabled> значение true.
  • Укажите ссылку на хранилище доверенных сертификатов с помощью элемента <TrustStore>. Хранилище доверенных сертификатов содержит издателя сертификата клиента и цепочку сертификатов центра сертификации, что необходимо.

Подробнее о TLS/SSL…

Как изменить виртуальный хост

Клиенты Cloud с платным аккаунтом и все клиенты Edge для частного облака могут использовать API Update a Virtual Host (Обновить виртуальный хост), чтобы обновить виртуальный хост. Этот API позволяет задавать все свойства виртуального хоста, описанные в справочнике по свойствам виртуального хоста.

Обновите виртуальный хост, используя API Update a Virtual Host. При использовании API в теле запроса необходимо указать полное определение виртуального хоста, а не только элементы, которые вы хотите изменить.

В этом примере задано значение свойства proxy_read_timeout:

curl -X PUT -H "Content-Type:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \
    -d '<VirtualHost  name="myTLSVHost">
         <HostAliases>
           <HostAlias>api.myCompany.com</HostAlias>
         </HostAliases>
         <Port>443</Port>
         <SSLInfo>
           <Enabled>true</Enabled>
           <ClientAuthEnabled>false</ClientAuthEnabled>
           <KeyStore>ref://myTestKeystoreRef</KeyStore>
           <KeyAlias>myKeyAlias</KeyAlias>
         </SSLInfo>
         <Properties>
           <Property name="proxy_read_timeout">50</Property>
         </Properties>
     </VirtualHost>' \
    -u orgAdminEmail:password

Как удалить виртуальный хост

Прежде чем удалить виртуальный хост из среды, необходимо обновить все прокси API, которые ссылаются на этот виртуальный хост, чтобы удалить ссылку. Подробнее о том, как настроить прокси-сервер API для использования виртуального хоста…

Удалите виртуальный хост, используя API Delete a Virtual Host (Удалить виртуальный хост):

curl -X DELETE \
  https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \
  -u orgAdminEmail:password

Просмотр информации о виртуальном хосте

Ниже описано, как посмотреть информацию о виртуальных хостах, определенных в среде.

Edge

Чтобы посмотреть информацию о виртуальном хосте в интерфейсе Edge:

  1. Войдите в аккаунт на сайте apigee.com/edge.

    Клиенты Edge для частного облака используют http://ms-ip:9000 (локально), где ms-ip – это IP-адрес или DNS-имя узла сервера управления.

  2. На панели навигации слева выберите Admin (Администрирование) > Virtual Hosts (Виртуальные хосты).
  3. Выберите среду, например prod или test.

    Появятся виртуальные хосты, определенные для среды. Если виртуальный хост настроен на использование хранилища ключей или доверенного хранилища, нажмите Показать, чтобы посмотреть дополнительную информацию.

Если виртуальный хост настроен на использование TLS/SSL, рядом с его названием появится значок замка. Это означает, что сертификат TLS/SSL, ключ и цепочка сертификатов были загружены в Edge и связаны с виртуальным хостом. Чтобы посмотреть информацию о доступных сертификатах:

  1. На панели навигации слева выберите Admin > Environment > TLS Keystores (Администратор > Среда > Хранилища ключей TLS).
  2. Выберите среду (обычно prod или test).
  3. Разверните хранилища ключей, чтобы посмотреть сертификат.

Классическая версия Edge (частное облако)

Чтобы посмотреть информацию о виртуальном хосте в классическом интерфейсе Edge:

  1. Войдите в http://ms-ip:9000, где ms-ip – это IP-адрес или DNS-имя узла сервера управления.
  2. На панели навигации слева выберите Admin (Администрирование) > Virtual Hosts (Виртуальные хосты).
  3. Выберите среду, например prod или test.
  4. Нажмите на вкладку Виртуальные хосты.

    Появятся виртуальные хосты, определенные для среды. Если виртуальный хост настроен на использование хранилища ключей или доверенного хранилища, нажмите Показать, чтобы посмотреть дополнительную информацию.

    На вкладке &quot;Виртуальные хосты&quot; отображается информация о названии, порте, псевдониме и т. д.

Если виртуальный хост настроен на использование TLS/SSL, рядом с его названием появится значок замка. Это означает, что сертификат TLS/SSL, ключ и цепочка сертификатов были загружены в Edge и связаны с виртуальным хостом. Чтобы посмотреть информацию о доступных сертификатах:

  1. На панели навигации вверху страницы выберите Администрирование > Сертификаты TLS.
  2. Выберите среду (обычно prod или test).
  3. Разверните хранилища ключей, чтобы посмотреть сертификат.

Как посмотреть виртуальный хост с помощью Edge API

Вы также можете использовать API Edge, чтобы просматривать информацию о виртуальных хостах. Например, API List Virtual Hosts (Список виртуальных хостов) возвращает список всех виртуальных хостов:

curl -X GET -H "accept:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/environments/env_name/virtualhosts \
    -u orgAdminEmail:pWord

где orgAdminEmail:pWord – имя пользователя и пароль администратора организации, а org_name/env_name – организация и среда, содержащие виртуальный хост. Пример ответа

[
 "default",
 "secure"
]

Чтобы посмотреть информацию об определенном виртуальном хосте, используйте API Get Virtual Host (Получить виртуальный хост):

curl -X GET -H "accept:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \
    -u orgAdminEmail:pWord

где vhost_name – название виртуального хоста. Например, вы можете указать vhost_name как "secure", чтобы посмотреть конфигурацию виртуального хоста по умолчанию, созданного Apigee:

<VirtualHost name="secure">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <Properties/>
    <Interfaces/>
    <RetryOptions/>
    <SSLInfo>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <Enabled>true</Enabled>
        <KeyAlias>freetrial</KeyAlias>
        <KeyStore>ref://freetrial</KeyStore>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
    </SSLInfo>
</VirtualHost>

Настройка прокси-сервера API для использования виртуального хоста

При создании нового прокси-сервера API Edge автоматически настраивает его на использование всех доступных виртуальных хостов в организации. Запрос к прокси API через виртуальный хост имеет следующий вид:

https://host-alias/proxy-base-path/resource-path

Где:

  • host-alias – это, как правило, имя DNS виртуального хоста.
  • proxy-base-path определяется при создании прокси-сервера API и является уникальным для каждого прокси-сервера API.
  • resource-path путь к ресурсу, доступному через прокси-сервер API.

Управление виртуальными хостами, используемыми прокси-сервером API

В XML-конфигурации прокси-сервера API тег virtualhost используется для указания имени виртуального хоста, связанного с прокси-сервером API:

<HTTPProxyConnection>
  <BasePath>/v1/my/proxy/basepath</BasePath>
  <VirtualHost>secure</VirtualHost>
  <VirtualHost>default</VirtualHost>
</HTTPProxyConnection>

Например, <VirtualHost>secure</VirtualHost> означает, что клиент может вызвать прокси-сервер API, используя псевдоним хоста виртуального хоста "secure".

Обычно виртуальные хосты, связанные с прокси-сервером API, изменяются в следующих случаях:

  • Вы создаете новый виртуальный хост и у вас есть существующие прокси API. Вам нужно будет изменить все существующие прокси API, чтобы добавить новый виртуальный хост.
  • Вы создаете новый прокси-сервер API, который не должен быть доступен через определенный виртуальный хост. Вам нужно изменить прокси-сервер API, чтобы удалить из его определения виртуальный хост.

Чтобы изменить виртуальные хосты, связанные с прокси-сервером API:

  1. Откройте редактор прокси-сервера API, как описано ниже.

    Edge

    Чтобы открыть редактор прокси-сервера API в интерфейсе Edge:

    1. Войдите в аккаунт на сайте apigee.com/edge.

      Клиенты Edge для частного облака используют http://ms-ip:9000 (локально), где ms-ip – это IP-адрес или DNS-имя узла сервера управления.

    2. На панели навигации слева выберите Разработка > Прокси API.
    3. Выберите в списке прокси API, который нужно изменить.

    Классическая версия Edge (частное облако)

    Чтобы открыть редактор прокси-сервера API в классическом интерфейсе Edge:

    1. Войдите в http://ms-ip:9000, где ms-ip – это IP-адрес или DNS-имя узла сервера управления.
    2. На панели навигации вверху выберите API > Прокси API.
    3. Выберите в списке прокси API, который нужно изменить.
  2. Нажмите на вкладку Разработка.
  3. В разделе Конечные точки прокси-сервера выберите default (по умолчанию).
  4. В области кода:
    1. Удалите все элементы <VirtualHost> для виртуальных хостов, не поддерживаемых прокси-сервером API.
    2. Добавьте новый элемент <VirtualHost> с названием нового виртуального хоста. Например, если новый виртуальный хост называется MyVirtualHost, добавьте следующий тег:
      <HTTPProxyConnection>
        <BasePath>/v1/my/proxy/basepath</BasePath>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
        <VirtualHost>MyVirtualHost</VirtualHost>
      </HTTPProxyConnection>
  5. Сохраните прокси-сервер API. Если прокси-сервер API был развернут, сохранение приведет к его повторному развертыванию с новой настройкой.

Как задать базовый URL, который отображается в интерфейсе Edge для прокси-сервера API

В интерфейсе Edge отображается URL прокси-сервера API на основе настроек виртуального хоста, соответствующего месту развертывания прокси-сервера. На этом экране может быть указан номер порта маршрутизатора виртуального хоста.

В большинстве случаев URL, отображаемый в интерфейсе Edge, является правильным URL для отправки внешних запросов к прокси-серверу. Однако в некоторых конфигурациях отображаемый URL неправильный. Например, к несоответствию отображаемого и фактического URL, используемого для внешних запросов к прокси-серверу, может привести любая из следующих конфигураций:

  • Завершение SSL-подключения происходит на балансировщике нагрузки.
  • Сопоставление портов происходит между балансировщиком нагрузки и маршрутизаторами Apigee.
  • Балансировщик нагрузки, настроенный с перезаписью пути

Edge поддерживает атрибут виртуального хоста <BaseUrl>, который позволяет переопределить URL, отображаемый в интерфейсе Edge. Ниже приведен пример объекта виртуального хоста с атрибутом <BaseUrl>. В этом примере значение "http://myCo.com" отображается в интерфейсе Edge:

<VirtualHost name="myTLSVHost">
  <HostAliases>
    <HostAlias>api.myCompany.com</HostAlias>
  </HostAliases>
  <BaseUrl>http://myCo.com</BaseUrl>
  <Port>443</Port>
  <SSLInfo>
    <Enabled>true</Enabled>
    <ClientAuthEnabled>false</ClientAuthEnabled>
    <KeyStore>ref://myTestKeystoreRef</KeyStore>
    <KeyAlias>myKeyAlias</KeyAlias>
  </SSLInfo>
</VirtualHost>

Обратите внимание, что значение <BaseUrl> должно включать протокол (например, "http://" или "https://").

Если <BaseUrl> не задан, то URL по умолчанию, отображаемый в интерфейсе Edge, будет выглядеть как "api.myCompany.com", хотя фактический псевдоним хоста – "http://myCo.com".