Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
В Apigee Edge весь входящий API-трафик обрабатывается маршрутизатором . Это означает, что все HTTP и HTTPS-запросы к прокси-серверу Edge API сначала обрабатываются маршрутизатором Edge. Следовательно, запрос к прокси-серверу API должен быть направлен на IP-адрес и открытый порт маршрутизатора.
Виртуальный хост позволяет размещать несколько доменных имен на одном сервере или группе серверов. В случае Edge серверы соответствуют пограничным маршрутизаторам. Определяя виртуальные хосты на маршрутизаторе, вы можете обрабатывать запросы к нескольким доменам.
Виртуальный хост на Edge определяет протокол (HTTP или HTTPS), а также порт маршрутизатора и псевдоним хоста. Псевдоним хоста обычно представляет собой доменное имя DNS, которое сопоставляется с IP-адресом маршрутизатора.
Например, на следующем изображении показан маршрутизатор с двумя определениями виртуальных хостов:

В этом примере есть два определения виртуальных хостов. Один обрабатывает HTTPS-запросы для домена domainName1 , другой — HTTP-запросы для домена domainName2 .
При отправке запроса к API-прокси маршрутизатор сравнивает заголовок Host и номер порта входящего запроса со списком псевдонимов хостов, определенных всеми виртуальными хостами, чтобы определить, какой виртуальный хост обрабатывает запрос.
Ниже приведены примеры конфигурации виртуальных хостов:

Антипаттерн
Определение нескольких виртуальных хостов с одинаковым псевдонимом хоста и номером порта в одной или разных средах организации или между организациями может привести к путанице при маршрутизации запросов API и вызвать неожиданные ошибки/некорректное поведение.
Давайте рассмотрим пример, чтобы объяснить последствия наличия нескольких виртуальных хостов с одним и тем же псевдонимом хоста.
Предположим, есть два виртуальных хоста: sandbox and secure определенный с тем же псевдонимом хоста, например, api.company.abc.com в среде:

При описанной выше конфигурации возможны два сценария, которые будут рассмотрены в следующих разделах.
Сценарий 1: API-прокси настроен на прием запросов только к одному из виртуальных хостов в изолированной среде.
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint> В этом сценарии, когда клиентские приложения обращаются к конкретному API-прокси, используя псевдоним хоста api.company.abc.com , они периодически будут получать ошибки 404 со следующим сообщением:
Unable to identify proxy for host: secure
Это происходит потому, что маршрутизатор отправляет запросы как на виртуальные хосты sandbox , так и на secure виртуальные хосты. Когда запросы направляются на виртуальный хост sandbox , клиентские приложения получают успешный ответ. Однако, когда запросы направляются на secure виртуальный хост, клиентские приложения получают ошибку 404, поскольку API-прокси не настроен на прием запросов на secure виртуальном хосте.
Сценарий 2: Настроен API-прокси для приема запросов как к изолированной среде виртуальных хостов, так и к защищенной среде.
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint> В этом сценарии, когда клиентские приложения обращаются к определенному API-прокси, используя псевдоним хоста api.company.abc.com , они получают корректный ответ в соответствии с логикой прокси.
Однако это приводит к хранению некорректных данных в Analytics, поскольку запросы API направляются на оба виртуальных хоста, тогда как фактические запросы должны были быть отправлены только на один виртуальный хост.
Это также может повлиять на информацию в журналах и любые другие данные, связанные с виртуальными хостами.
Влияние
- Ошибка 404 возникает, поскольку запросы к API могут направляться на виртуальный хост, для которого API-прокси может быть не настроен на прием этих запросов.
- Некорректные аналитические данные, поскольку запросы к API направляются на все виртуальные хосты с одинаковым псевдонимом хоста, тогда как запросы были сделаны только для конкретного виртуального хоста.
Передовая практика
- Не следует создавать несколько виртуальных хостов с одинаковым псевдонимом хоста и номером порта в одной и той же среде, а также в разных средах организации.
Если необходимо определить несколько виртуальных хостов, используйте разные псевдонимы хостов для каждого из них, как показано ниже:
