Ссылка на ресурс виртуального хоста

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

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

Объект XML, который вы используете для определения виртуального хоста, зависит от версии Edge: Cloud или Private Cloud.

Если вы используете частное облако, убедитесь, что XML-файл подходит для вашей версии Edge.

Облако и частное облако 4.17.01 и более поздние версии

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <BaseUrl>http://myCo.com</BaseUrl>
    <OCSPStapling>offOn</OCSPStapling>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <!-- Private Cloud only -->
        <Interface>interfaceName</Interface>
    </Interfaces>
    <RetryOptions>
        <RetryOption>option</RetryOption>
    </RetryOptions>
    <ListenOptions>
        <ListenOption>option</ListenOption>
    </ListenOptions>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
    <!-- UseBuiltInFreeTrialCert is for Edge Cloud only -->
    <UseBuiltInFreeTrialCert>trueFalse</UseBuiltInFreeTrialCert>
    <PropagateTLSInformation>
        <!-- PropagateTLSInformation is Alpha in the Cloud only -->
        <ConnectionProperties>trueFalse</ConnectionProperties>
        <ClientProperties>trueFalse</ClientProperties>
    </PropagateTLSInformation>
    <Properties>
        <Property name="proxy_read_timeout">timeout</Property>
        <Property name="keepalive_timeout">timeout</Property>
        <Property name="proxy_request_buffering">onOff</Property>
        <Property name="proxy_buffering">onOff</Property>
        <!-- ssl_protocols is Private Cloud only -->
        <Property name="ssl_protocols">protocolList</Property>
        <Property name="ssl_ciphers">cipherList</Property>
    </Properties>
</VirtualHost>

Частное облако 4.16.01–4.16.09

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <Interface>interfaceName</Interface>
    </Interfaces>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
</VirtualHost>

Частное облако 4.15.07 и более ранние версии

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <Interface>interfaceName</Interface>
    </Interfaces>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>keystore</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>truststore</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
        <Ciphers>
             <Cipher>cipher</Cipher>
             <Cipher>cipher</Cipher>
         </Ciphers>
         <Protocols>
             <Protocol>protocol</Protocol>
             <Protocol>protocol</Protocol>
         </Protocols>
    </SSLInfo>
</VirtualHost>

Свойства конфигурации виртуального хоста

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

Свойства Описание По умолчанию Обязательно
VirtualHost

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

В атрибуте name можно использовать только следующие символы: A–Z, 0–9, . _ \ – $%.

Нет Да
Порт

Указывает номер порта, используемый виртуальным хостом. Убедитесь, что порт открыт на пограничном маршрутизаторе.

Если вы укажете порт в элементе hostalias, то номер порта, заданный в элементе <Port> , должен совпадать с ним.

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

Для версий Private Cloud 4.16.01–4.17.05: при создании виртуального хоста вы указываете порт маршрутизатора, используемый виртуальным хостом. Например, port 9001. По умолчанию маршрутизатор работает от имени пользователя apigee, у которого нет доступа к привилегированным портам (обычно это порты 1024 и ниже). Если вы хотите создать виртуальный хост, который привязывает маршрутизатор к защищенному порту, настройте маршрутизатор так, чтобы он работал как пользователь с доступом к этим портам. Подробнее о том, как настроить виртуальный хост…

Для версий Private Cloud до 4.16.01: маршрутизатор может прослушивать только одно HTTPS-подключение для каждого виртуального хоста на определенном порту с указанным сертификатом. Поэтому несколько виртуальных хостов не могут использовать один и тот же номер порта, если завершение TLS происходит на маршрутизаторе на указанном порту.

Нет Да
BaseUrl Переопределяет URL, который интерфейс Edge показывает для прокси-сервера API, развернутого на виртуальном хосте. Удобно использовать, когда перед маршрутизаторами Edge находится внешний балансировщик нагрузки. Подробнее о настройке доступа к API по протоколу TLS для частного облака…

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

Нет Нет
OCSPStapling

Клиент OCSP (протокола проверки статуса сертификата в реальном времени) отправляет запрос статуса ответчику OCSP, чтобы определить, действителен ли сертификат TLS. Ответ показывает, действителен ли сертификат TLS и не отозван ли он.

Если прикрепление OCSP включено, Edge, выступая в качестве TLS-сервера для одностороннего TLS, может напрямую запрашивать ответчик OCSP и кешировать ответ. Затем Edge возвращает этот ответ клиенту TLS или прикрепляет его как часть рукопожатия TLS. Подробнее о том, как включить прикрепление OCSP на сервере…

Чтобы включить прикрепление OCSP, необходимо включить TLS. Чтобы включить функцию, установите значение on. Значение по умолчанию – off.

отключено Нет
HostAliases
HostAlias

Общедоступное имя DNS виртуального хоста на маршрутизаторе, при необходимости включающее номер порта. Сочетание псевдонима хоста и номера порта для виртуального хоста должно быть уникальным для всех виртуальных хостов в установке Edge. Это означает, что несколько виртуальных хостов могут использовать один и тот же номер порта, если у них разные псевдонимы хостов.

Вам необходимо создать запись DNS и запись CNAME, которые соответствуют псевдониму хоста. Псевдоним хоста должен соответствовать строке, которую клиент передает в заголовке Host.

Номер порта в HostAlias указывать необязательно. Если вы укажете порт как часть псевдонима хоста, то должны будете указать тот же порт с помощью элемента <Port>. Вы также можете указать два элемента HostAlias: один с номером порта, а другой без него.

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

В псевдоним хоста можно добавить подстановочный знак "*". Подстановочный знак "*" может быть только в начале псевдонима хоста (перед первой точкой) и не может использоваться вместе с другими символами. (пример: *.example.com). Сертификат TLS для виртуального хоста должен иметь соответствующий подстановочный знак в общем имени сертификата. Пример: *.example.com. Использование подстановочного знака в псевдониме виртуального хоста позволяет прокси API обрабатывать вызовы, адресованные нескольким субдоменам, например alpha.example.com, beta.example.com или live.example.com. Использование псевдонима с подстановочным знаком также позволяет использовать меньше виртуальных хостов в среде, чтобы не превышать ограничения продукта, поскольку виртуальный хост с подстановочным знаком считается только одним виртуальным хостом.

Для Cloud. Если у вас есть виртуальный хост, который использует порт, отличный от 443, вы не сможете добавить или удалить псевдоним хоста.

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

Нет Да
Интерфейсы Доступно только для Edge Private Cloud.
Интерфейс

Указывает сетевые интерфейсы, к которым нужно привязать port. Если вы не укажете этот элемент, порт будет привязан ко всем интерфейсам.

Например, чтобы привязать порт только к en0, укажите:

<Interfaces>
  <Interface>en0</Interface>
</Interfaces>

Чтобы определить, какие интерфейсы доступны в вашей системе, выполните команду "ifconfig -a".

Нет Все интерфейсы
RetryOptions Доступно для Edge Cloud и Private Cloud 4.18.01 и более поздних версий.
RetryOption

Настройте реакцию маршрутизатора для этого виртуального хоста, когда Message Processor перестанет работать.

Вы можете указать несколько значений, используя <RetryOption>. Допустимые значения:

off Отключает повторные попытки, и виртуальный хост возвращает код ошибки при запросе.
http_599 (По умолчанию) Если маршрутизатор получает от обработчика сообщений ответ HTTP 599, он пересылает запрос следующему обработчику сообщений.

HTTP 599 – это специальный код ответа, который генерируется обработчиком сообщений при его отключении. Процессор сообщений пытается выполнить все существующие запросы, но на новые запросы отвечает кодом HTTP 599, чтобы маршрутизатор повторил запрос на следующем процессоре сообщений.

error Если при установлении связи с Message Processor, передаче ему запроса или чтении заголовка ответа от него произошла ошибка, маршрутизатор пересылает запрос следующему Message Processor.
timeout Если при установке подключения к Message Processor, передаче ему запроса или чтении заголовка ответа от него происходит тайм-аут, маршрутизатор пересылает запрос следующему Message Processor.
invalid_header Если Message Processor вернул пустой или недопустимый ответ, маршрутизатор пересылает запрос следующему Message Processor.
http_XXX Если Message Processor вернул ответ с кодом HTTP XXX, Router пересылает запрос следующему Message Processor.

Если вы укажете несколько значений, маршрутизатор объединит их с помощью логического оператора ИЛИ.

Пример:

<RetryOptions>
  <RetryOption>http_599</RetryOption>
  <RetryOption>error</RetryOption>
  <RetryOption>timeout</RetryOption>
  <RetryOption>invalid_header</RetryOption>
</RetryOptions>
ListenOptions Доступно для Private Cloud 4.18.01 и более поздних версий, а также для Edge Cloud по запросу в службу поддержки Apigee Edge.
ListenOption

Если вы используете ELB в режиме сквозной передачи TCP для обработки запросов к пограничным маршрутизаторам, маршрутизатор будет считать IP-адрес ELB клиентским IP-адресом, а не фактическим клиентским IP-адресом. Если маршрутизатору требуется настоящий IP-адрес клиента, включите proxy_protocol на ELB, чтобы он передавал IP-адрес клиента в пакете TCP. На маршрутизаторе также необходимо задать для <ListenOption> в виртуальном хосте значение proxy_protocol. Поскольку ELB работает в режиме сквозной передачи TCP, обычно TLS завершается на маршрутизаторе. Поэтому обычно виртуальный хост настраивается на использование proxy_protocol только при настройке на использование TLS.

Значение по умолчанию для <ListenOption> – пустая строка.

Пример:

<ListenOptions>
  <ListenOption>proxy_protocol</ListenOption>
</ListenOptions>

Чтобы позже отменить значение <ListenOption>, обновите виртуальный хост и удалите тег <ListenOptions> из обновления.

SSLInfo
Включено

Включает одностороннее шифрование TLS/SSL. У вас должно быть определено хранилище ключей, содержащее сертификат и закрытый ключ.

Для облака. У вас должен быть сертификат, подписанный надежной организацией, например Symantec или VeriSign. Нельзя использовать самозаверяющие сертификаты или конечные сертификаты, подписанные самозаверяющим центром сертификации.

Для облака. Если существующий виртуальный хост настроен на использование порта, отличного от 443, вы не сможете изменить настройки TLS. Это означает, что вы не можете изменить настройку TLS с включенной на отключенную или наоборот.

false Нет
ClientAuthEnabled Включает двусторонний TLS или TLS клиента между Edge (сервером) и приложением (клиентом), выполняющим запрос. Чтобы включить двусторонний протокол TLS, необходимо настроить хранилище доверенных сертификатов в Edge, которое содержит сертификат клиента TLS. false Нет
KeyStore

Название хранилища ключей в Edge.

Apigee рекомендует использовать ссылку, чтобы указать название хранилища ключей. Это позволит вам изменять хранилище ключей без перезапуска маршрутизаторов. Подробнее о вариантах настройки TLS…

Нет Да, если параметр "Включено" имеет значение true
KeyAlias Псевдоним, указанный при загрузке сертификата и закрытого ключа в хранилище ключей. Псевдоним нужно указать буквально, без ссылок. Подробнее о вариантах настройки TLS… Нет Да, если параметр "Включено" имеет значение true
TrustStore

Название хранилища доверия в Edge, содержащего сертификат или цепочку сертификатов, используемых для двустороннего протокола TLS. Обязательно, если значение <ClientAuthEnabled> – true.

Apigee рекомендует использовать ссылку, чтобы указать имя хранилища доверенных сертификатов. Это позволит вам изменить хранилище без перезапуска маршрутизаторов. Подробнее о вариантах настройки TLS…

Нет Нет
IgnoreValidationErrors

Если значение равно true, ошибки сертификата TLS игнорируются. Это похоже на параметр -k в cURL.

Этот вариант действителен при настройке TLS для целевых серверов и целевых конечных точек, а также при настройке виртуальных хостов, использующих двусторонний TLS.

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

false Нет
Шифры

Только для Edge for Private Cloud версии 4.15.07 и более ранних.

Указывает шифры, поддерживаемые виртуальным хостом. Если шифры не указаны, будут разрешены все шифры, доступные для JVM.

Чтобы ограничить шифры, добавьте следующие элементы:

<Ciphers>
  <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
  <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
</Ciphers>
Все поддерживаемые JVM Нет
Протоколы

Только для Edge for Private Cloud версии 4.15.07 и более ранних.

Указывает протоколы, поддерживаемые виртуальным хостом. Если протоколы не указаны, будут разрешены все протоколы, доступные для JVM.

Чтобы ограничить протоколы, добавьте следующие элементы:

<Protocols>
  <Protocol>TLSv1</Protocol>
  <Protocol>TLSv1.2</Protocol>
  <Protocol>SSLv2Hello</Protocol>
</Protocols>
Все поддерживаемые JVM Нет
UseBuiltInFreeTrialCert Доступно только для Edge Cloud.
UseBuiltInFreeTrialCert

Если у вас платный аккаунт Edge for Cloud и у вас ещё нет сертификата и ключа TLS, вы можете создать виртуальный хост, который использует бесплатный пробный сертификат и ключ Apigee. Это означает, что вы можете создать виртуальный хост, не создавая хранилище ключей.

Бесплатный пробный сертификат Apigee определен для домена *.apigee.net. Поэтому значение <HostAlias> виртуального хоста также должно иметь формат *.apigee.net.

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

false Нет
PropagateTLSInformation Доступно в альфа-версии только для Edge Cloud.
ConnectionProperties

Включает сбор информации о TLS-подключении с помощью Edge. Затем эта информация становится доступна в виде переменных потока в прокси-сервере API. Подробнее о том, как получить доступ к информации о подключении TLS в прокси-сервере API…

false Нет
ClientProperties

Включает сбор сведений о сертификате клиента, полученных Edge при двустороннем TLS-подключении. Затем эта информация становится доступна в виде переменных потока в прокси-сервере API. Подробнее о том, как получить доступ к информации о подключении TLS в прокси-сервере API…

false Нет
Ресурсы Доступно для Edge Cloud и Private Cloud 4.17.01 и более поздних версий.
proxy_read_timeout

Устанавливает продолжительность времени ожидания (в секундах) между процессорами сообщений и маршрутизатором. Если маршрутизатор не получит от процессора сообщений ответ до истечения этого времени, он разорвет подключение и вернет ответ HTTP 504.

Значение proxy_read_timeout должно быть больше целевого значения времени ожидания, используемого процессором сообщений. Это гарантирует, что маршрутизатор не отключится по истечении времени ожидания до того, как Message Processor успеет вернуть ответ. По умолчанию целевое время ожидания для Message Processor составляет 55 секунд (55 000 миллисекунд), как определено токеном conf_http_HTTPTransport.io.timeout.millis для Message Processor.

57 Нет
keepalive_timeout

Устанавливает время ожидания (в секундах) между клиентом и маршрутизатором, когда клиент отправляет запрос, содержащий заголовок Keep-Alive. Маршрутизатор поддерживает подключение, пока не истечет срок действия.

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

65 Нет
ssl_ciphers

Задает шифры, поддерживаемые виртуальным хостом, переопределяя шифры по умолчанию, заданные в маршрутизаторе.

Укажите список шифров, разделенных двоеточием, в следующем формате:

<Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH;</Property>

Чтобы узнать больше о синтаксисе и допустимых значениях этого токена, перейдите на страницу https://www.openssl.org/docs/man1.0.2/man1/ciphers.html. Обратите внимание, что в этом токене используются названия шифров OpenSSL, например AES128-SHA256, а не названия шифров Java/JSSE, например TLS_RSA_WITH_AES_128_CBC_SHA256.

HIGH:!aNULL:

!MD5:

!DH+3DES:

!kEDH

Нет
ssl_protocols

Доступно только для Edge Private Cloud.

Задает протоколы TLS, поддерживаемые виртуальным хостом, в виде списка, разделенного пробелами, переопределяя протоколы по умолчанию, заданные в маршрутизаторе.

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

Укажите список протоколов TLS через пробел в следующем формате:

<Property name="ssl_protocols">TLSv1 TLSv1.2</Property>
TLSv1, TLSv1.1, TLSv1.2 Нет
proxy_request_buffering

Включает (on) или отключает (off) буферизацию тела запроса. Если буферизация включена, маршрутизатор буферизует весь текст запроса, прежде чем отправить его обработчику сообщений. Если произойдет ошибка, маршрутизатор может повторить попытку с другим процессором сообщений.

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

включено Нет
proxy_buffering Включает (on) или отключает (off) буферизацию ответа. Если буферизация включена, маршрутизатор буферизует ответ. Если буферизация отключена, ответ передается клиенту синхронно, сразу после того, как он получен маршрутизатором. включено Нет