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

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

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

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

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

Используйте следующую базовую процедуру для создания виртуального хоста. Фактическая процедура, которую вы используете, зависит от того, являетесь ли вы клиентом облака или частного облака и включаете ли вы TLS:

  1. Создайте запись DNS и запись CNAME для своего общедоступного домена.
  2. Если включить TLS на виртуальном хосте:
    1. Создайте и настройте хранилище ключей, используя процедуру, описанную здесь: Хранилища ключей и хранилища доверенных сертификатов .
    2. Загрузите свой сертификат и ключ в хранилище ключей. Убедитесь, что имя домена, указанное в вашем сертификате, соответствует псевдониму хоста, который вы хотите использовать для виртуального хоста.
    3. Создайте ссылку на хранилище ключей с помощью пользовательского интерфейса или API Edge. В ссылке указывается имя хранилища ключей и тип ссылки 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. Выберите «Администратор» > «Виртуальные хосты» на левой панели навигации.
  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 создания виртуального хоста :

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.

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

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

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

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

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

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

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

  • Вы можете использовать ссылки на хранилище ключей и хранилище доверенных сертификатов на виртуальных хостах только в том случае, если вы поддерживаете 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 для получения дополнительной информации об использовании TLS.

Изменение виртуального хоста

Клиент Cloud с платной учетной записью и все клиенты Edge for Private Cloud могут использовать API обновления виртуального хоста для обновления виртуального хоста. Этот API позволяет вам установить все свойства виртуального хоста, описанные в разделе «Справочник по свойствам виртуального хоста» .

Обновите виртуальный хост с помощью API обновления виртуального хоста . При использовании 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 удаления виртуального хоста :

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

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

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

Край

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

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

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

  2. Выберите «Администратор» > «Виртуальные хосты» на левой панели навигации.
  3. Выберите среду, например prod или test .

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

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

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

Классический Edge (частное облако)

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

  1. Войдите в систему по http:// ms-ip :9000 , где ms-ip — это IP-адрес или DNS-имя узла сервера управления.
  2. Выберите «Администратор» > «Виртуальные хосты» на левой панели навигации.
  3. Выберите среду, например prod или test .
  4. Откройте вкладку «Виртуальные хосты» .

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

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

Если виртуальный хост настроен на использование 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, используя псевдоним «безопасного» виртуального хоста.

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

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

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

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

    Край

    Чтобы получить доступ к редактору прокси 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. В разделе «Конечные точки прокси» выберите «По умолчанию» .
  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-адрес не будет соответствовать фактическому 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».