Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Как разработчик, работающий с Apigee Edge, ваша основная деятельность по разработке включает настройку прокси-серверов API, которые функционируют как прокси-серверы для API или серверных служб. Этот документ представляет собой справочник по всем элементам конфигурации, доступным вам при создании прокси-серверов API.
Если вы учитесь создавать прокси-серверы API, рекомендуется начать с темы Создание простого прокси-сервера API .
Наиболее распространенные способы редактирования конфигураций прокси:
- Использование редактора XML в пользовательском интерфейсе Edge
- Загрузите конфигурацию и отредактируйте ее локально, как описано в разделе Локальная разработка конфигураций прокси .
Локальная разработка конфигураций прокси
Вы можете загрузить конфигурации прокси-сервера и редактировать их на локальном компьютере. Когда вы закончите, вы загрузите результаты в Edge. Этот подход позволяет интегрировать конфигурации прокси-сервера в систему управления версиями, управление версиями и другие общие рабочие процессы. Кроме того, работая над конфигурацией прокси-сервера локально, вы можете использовать собственный редактор XML и инструменты проверки.
В этом разделе описывается, как использовать пользовательский интерфейс для загрузки существующей конфигурации прокси-сервера, ее редактирования и последующей загрузки обратно в Edge для развертывания. Вы также можете использовать apigeetool для загрузки и развертывания новой конфигурации прокси-сервера (с помощью команд fetchproxy
и deployproxy
соответственно).
Чтобы изменить конфигурацию прокси-сервера локально с помощью пользовательского интерфейса:
- Загрузите текущую конфигурацию прокси-сервера в пользовательском интерфейсе Edge. (В представлении «Прокси API» выберите «Проект» > «Загрузить версию» .)
- На локальном компьютере создайте новый каталог и разверните в него загруженный ZIP-файл.
Чтобы развернуть ZIP-файл, вы можете использовать такую утилиту, как
unzip
, как показано в следующем примере:mkdir myappdir
unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir
Расширенное содержимое ZIP-файла должно быть похоже на структуру, описанную в разделе «Структура прокси API» .
- При необходимости отредактируйте исходные файлы. Описание исходных файлов в конфигурации прокси см. в разделе Файлы конфигурации и структура каталогов API-прокси .
Например, чтобы включить мониторинг работоспособности в прокси-сервере API, отредактируйте файл конфигурации TargetEndpoint в каталоге
/apiproxy/targets/
. Файлом по умолчанию в этом каталоге являетсяdefault.xml
, хотя могут быть файлы с другими именами, если вы используете условные цели .В этом случае, если файл конфигурации TargetEndpoint и его каталог не существуют, создайте их.
- После завершения редактирования файлов конфигурации прокси обязательно сохраните изменения.
- Перейдите в новый каталог, который вы создали при раскрытии ZIP-файлов (корневой каталог расширенных файлов конфигурации).
Например, если вы развернули файлы в каталог
/myappdir
, перейдите в этот каталог, как показано в следующем примере:cd myappdir
Вам следует перейти в этот каталог перед повторным архивированием файлов конфигурации прокси-сервера, поскольку вы не хотите, чтобы каталог
/myappdir
был включен в ZIP-файл. Каталог верхнего уровня в ZIP-файле должен быть/apiproxy
. - Повторно заархивируйте файлы конфигурации прокси, включая новые или измененные файлы. Вы можете использовать такую утилиту, как
zip
, как показано в следующем примере:zip my-new-proxy.zip -r .
Каталог верхнего уровня в ZIP-файле должен быть
/apiproxy
.Особых требований к имени ZIP-файла нет. Например, вам не нужно увеличивать номер версии или указывать дату в имени файла, но это может быть полезно для отладки или контроля версий.
Edge увеличивает номер версии новой конфигурации прокси-сервера при ее загрузке.
- Загрузите новую конфигурацию прокси-сервера с помощью пользовательского интерфейса Edge. (В представлении «Прокси API» выберите «Проект» > «Загрузить новую версию» .)
Если вы получаете сообщение об ошибке, например: Bundle is invalid. Empty bundle. , затем убедитесь, что каталог верхнего уровня вашего ZIP-файла —
/apiproxy
. Если это не так, повторно заархивируйте файлы конфигурации прокси-сервера из корня расширенного каталога.После загрузки новой конфигурации прокси-сервера Edge увеличивает номер версии и отображает его в представлении «Сводка редакций» .
Edge не развертывает новую версию после того, как вы загрузите ее с помощью пользовательского интерфейса.
- Разверните новую версию.
Для получения дополнительной информации см . Учебное пособие: Как загрузить прокси-сервер с помощью пользовательского интерфейса и API управления в сообществе Apigee .
Структура прокси API
Прокси API состоит из следующей конфигурации:
Базовая конфигурация | Основные параметры конфигурации прокси-сервера API. См. базовую конфигурацию. |
Конфигурация прокси-конечной точки | Настройки входящего HTTP-соединения (от запроса приложений к Apigee Edge), потоков запросов и ответов, а также вложений политик. См. ПроксиЭндпойнт . |
Конфигурация целевой конечной точки | Настройки исходящего HTTP-соединения (от Apigee Edge к внутренней службе), потоков запросов и ответов, а также вложений политик. См. TargetEndpoint. |
Потоки | Конвейеры запросов и ответов ProxyEndpoint и TargetEndpoint, к которым можно прикрепить политики. См. Потоки . |
Политика | Файлы конфигурации в формате XML, соответствующие схемам политики Apigee Edge. См. Политики . |
Ресурсы | Скрипты, файлы JAR и файлы XSLT, на которые ссылаются политики для выполнения пользовательской логики. См. Ресурсы . |
Структура и содержимое каталога прокси-сервера API
Компоненты в таблице выше определяются файлами конфигурации в следующей структуре каталогов:
Файлы конфигурации и структура каталогов API-прокси
В этом разделе описываются файлы конфигурации и структура каталогов прокси-сервера API.
Базовая конфигурация
/apiproxy/weatherapi.xml
Базовая конфигурация прокси-сервера API, определяющая имя прокси-сервера API. Имя должно быть уникальным внутри организации.
Пример конфигурации:
<APIProxy name="weatherapi"> </APIProxy>
Элементы базовой конфигурации
Имя | Описание | По умолчанию | Необходимый? |
---|---|---|---|
APIProxy | |||
name | Имя прокси-сервера API, которое должно быть уникальным в пределах организации. В имени разрешено использовать следующие символы: A-Za-z0-9_- | Н/Д | Да |
revision | Номер версии конфигурации прокси-сервера API. Вам не нужно явно указывать номер версии, поскольку Apigee Edge автоматически отслеживает текущую версию прокси-сервера API. | Н/Д | Нет |
ConfigurationVersion | Версия схемы конфигурации прокси API, которой соответствует этот прокси API. Единственное поддерживаемое значение в настоящее время — majorVersion 4 и majorVersion 0. Этот параметр можно использовать в будущем, чтобы обеспечить развитие формата прокси-сервера API. | 4.0 | Нет |
Description | Текстовое описание прокси API. Если оно предоставлено, описание будет отображаться в пользовательском интерфейсе управления Edge. | Н/Д | Нет |
DisplayName | Понятное имя, которое может отличаться от атрибута name конфигурации прокси-сервера API. | Н/Д | Нет |
Policies | Список политик в каталоге /policies этого прокси API. Обычно вы увидите этот элемент только в том случае, если прокси-сервер API был создан с использованием пользовательского интерфейса управления Edge. Это просто параметр «манифеста», предназначенный для обеспечения видимости содержимого прокси-сервера API. | Н/Д | Нет |
ProxyEndpoints | Список ProxyEndpoints в каталоге /proxies этого прокси API. Обычно вы увидите этот элемент только в том случае, если прокси-сервер API был создан с использованием пользовательского интерфейса управления Edge. Это просто параметр «манифеста», предназначенный для обеспечения видимости содержимого прокси-сервера API. | Н/Д | Нет |
Resources | Список ресурсов (JavaScript, Python, Java, XSLT) в каталоге /resources этого прокси API. Обычно вы увидите этот элемент только в том случае, если прокси-сервер API был создан с использованием пользовательского интерфейса управления Edge. Это просто параметр «манифеста», предназначенный для обеспечения видимости содержимого прокси-сервера API. | Н/Д | Нет |
Spec | Идентифицирует спецификацию OpenAPI, связанную с прокси-сервером API. В качестве значения устанавливается URL-адрес или путь в хранилище спецификаций. Примечание . Хранилище спецификаций доступно только в версии New Edge. Дополнительные сведения о хранилище спецификаций см. в разделе Управление спецификациями и обмен ими . | Н/Д | Нет |
TargetServers | Список TargetServers, на которые ссылаются любые TargetEndpoints этого прокси API. Обычно вы увидите этот элемент только в том случае, если прокси-сервер API был создан с использованием пользовательского интерфейса управления Edge. Это просто параметр «манифеста», предназначенный для обеспечения видимости содержимого прокси-сервера API. | Н/Д | Нет |
TargetEndpoints | Список TargetEndpoints в каталоге /targets этого прокси API. Обычно вы увидите этот элемент только в том случае, если прокси-сервер API был создан с использованием пользовательского интерфейса управления Edge. Это просто параметр «манифеста», предназначенный для обеспечения видимости содержимого прокси-сервера API. | Н/Д | Нет |
ПроксиКонечная точка
На следующем изображении показан поток запросов/ответов:
/apiproxy/proxies/default.xml
Конфигурация ProxyEndpoint определяет входящий (клиентский) интерфейс для прокси-сервера API. Когда вы настраиваете ProxyEndpoint, вы настраиваете конфигурацию сети, которая определяет, как клиентские приложения («приложения») должны вызывать прокси-API.
Следующий пример конфигурации ProxyEndpoint будет храниться в /apiproxy/proxies
:
<ProxyEndpoint name="default"> <PreFlow/> <Flows/> <PostFlow/> <HTTPProxyConnection> <BasePath>/weather</BasePath> <VirtualHost>default</VirtualHost> </HTTPProxyConnection> <FaultRules/> <DefaultFaultRule/> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
Обязательными элементами конфигурации в базовой ProxyEndpoint являются:
Элементы конфигурации ProxyEndpoint
Имя | Описание | По умолчанию | Необходимый? |
---|---|---|---|
ProxyEndpoint | |||
name | Имя ProxyEndpoint. Должно быть уникальным в конфигурации прокси-сервера API, если (в редких случаях) определено несколько ProxyEndpoints. В имени разрешено использовать следующие символы: A-Za-z0-9._\-$ % . | Н/Д | Да |
PreFlow | Определяет политики в потоке PreFlow запроса или ответа. | Н/Д | Да |
Flows | Определяет политики в условных потоках запроса или ответа. | Н/Д | Да |
PostFlow | Определяет политики в потоке PostFlow запроса или ответа. | Н/Д | Да |
HTTPProxyConnection | Определяет сетевой адрес и путь URI, связанные с прокси-сервером API. | ||
BasePath | Обязательная строка, которая однозначно идентифицирует путь URI, используемый Apigee Edge для маршрутизации входящих сообщений на соответствующий прокси-сервер API. BasePath — это фрагмент URI (например Использование подстановочного знака в базовых путях Вы можете использовать один или несколько подстановочных знаков «*» в базовых путях прокси-сервера API. Например, базовый путь Важно: Apigee НЕ поддерживает использование подстановочного знака «*» в качестве первого элемента базового пути. Например, НЕ поддерживается: | / | Да |
VirtualHost | Связывает прокси-сервер API с конкретными базовыми URL-адресами среды. VirtualHost — это именованная конфигурация, которая определяет один или несколько URL-адресов для среды. Именованные VirtualHosts, определенные для ProxyEndpoint, определяют домены и порты, на которых предоставляется прокси-сервер API, и, как следствие, URL-адрес, который приложения используют для вызова прокси-сервера API. По умолчанию для среды определены два именованных VirtualHosts: | по умолчанию | Нет |
Properties | Набор дополнительных параметров конфигурации HTTP можно определить как свойства <ProxyEndpoint> . | Н/Д | Нет |
FaultRules | Определяет, как ProxyEndpoint реагирует на ошибку. Правило сбоя определяет два элемента:
См. Обработка ошибок . | Н/Д | Нет |
DefaultFaultRule | Обрабатывает любые ошибки (системные, транспортные, сообщения или политики), которые не обрабатываются явно другим правилом сбоя. См. Обработка ошибок . | Н/Д | Нет |
RouteRule | Определяет место назначения входящих сообщений запроса после обработки конвейером запросов ProxyEndpoint. Обычно RouteRule указывает на именованную конфигурацию TargetEndpoint, но он также может указывать непосредственно на URL-адрес. | ||
Name | Обязательный атрибут, предоставляющий имя RouteRule. В имени разрешено использовать следующие символы: A-Za-z0-9._\-$ % . Например, Cat2 %_ — это официальное имя. | Н/Д | Да |
Condition | Необязательный условный оператор, используемый для динамической маршрутизации во время выполнения. Условные RouteRules полезны, например, для включения маршрутизации на основе контента для поддержки управления версиями серверной части. | Н/Д | Нет |
TargetEndpoint | Необязательная строка, идентифицирующая именованную конфигурацию TargetEndpoint. Именованная TargetEndpoint — это любая TargetEndpoint, определенная в том же прокси-сервере API в каталоге Называя TargetEndpoint, вы указываете, куда должны пересылаться сообщения запроса после обработки конвейером запросов ProxyEndpoint. Обратите внимание, что это необязательная настройка. ProxyEndpoint может напрямую вызывать URL-адрес. Например, ресурс JavaScript или Java, функционирующий в роли HTTP-клиента, может выполнять основную функцию TargetEndpoint, то есть перенаправлять запросы к серверной службе. | Н/Д | Нет |
URL-адрес | Необязательная строка, определяющая исходящий сетевой адрес, вызываемый ProxyEndpoint, в обход любых конфигураций TargetEndpoint, которые могут храниться в /targets | Н/Д | Нет |
Как настроить RouteRules
Именованный TargetEndpoint относится к файлу конфигурации в каталоге /apiproxy/targets
, в который RouteRule перенаправляет запрос после обработки ProxyEndpoint.
Например, следующее RouteRule относится к конфигурации /apiproxy/targets/myTarget.xml
:
<RouteRule name="default"> <TargetEndpoint>myTarget</TargetEndpoint> </RouteRule>
Прямой вызов URL-адреса
ProxyEndpoint также может напрямую вызывать серверную службу. Прямой вызов URL-адреса обходит любую именованную конфигурацию TargetEndpoints в /apiproxy/targets
). По этой причине TargetEndpoint является дополнительной конфигурацией прокси-сервера API, хотя на практике прямой вызов из ProxyEndpoint не рекомендуется.
Например, следующий RouteRule выполняет HTTP-вызов http://api.mycompany.com/v2
.
<RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
Условные маршруты
RouteRules можно объединять в цепочку для поддержки динамической маршрутизации во время выполнения. Входящие запросы могут быть перенаправлены в именованные конфигурации TargetEndpoint, непосредственно на URL-адреса или на их комбинацию на основе заголовков HTTP, содержимого сообщения, параметров запроса или контекстной информации, такой как время суток, локаль и т. д.
Условные правила маршрутизации работают как другие условные операторы в Apigee Edge. См. Справочник по условиям и Справочник по переменным .
Например, следующая комбинация RouteRule сначала оценивает входящий запрос, чтобы проверить значение заголовка HTTP. Если заголовок HTTP routeTo
имеет значение TargetEndpoint1
, то запрос перенаправляется в TargetEndpoint с именем TargetEndpoint1
. Если нет, то входящий запрос перенаправляется на http://api.mycompany.com/v2
.
<RouteRule name="MyRoute"> <Condition>request.header.routeTo = "TargetEndpoint1"</Condition> <TargetEndpoint>TargetEndpoint1</TargetEndpoint> </RouteRule> <RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
Нулевые маршруты
Можно определить нулевое RouteRule для поддержки сценариев, в которых сообщение запроса не нужно пересылать в TargetEndpoint. Это полезно, когда ProxyEndpoint выполняет всю необходимую обработку, например, используя JavaScript для вызова внешней службы или получения данных в результате поиска в хранилище ключей и значений служб API.
Например, следующее определяет нулевой маршрут:
<RouteRule name="GoNowhere"/>
Условные нулевые маршруты могут быть полезны. В следующем примере нулевой маршрут настроен на выполнение, когда HTTP-заголовок request.header.X-DoNothing
имеет значение, отличное от null
.
<RouteRule name="DoNothingOnDemand"> <Condition>request.header.X-DoNothing != null</Condition> </RouteRule>
Помните, что RouteRules могут быть связаны в цепочку, поэтому условный нулевой Route обычно является одним из компонентов набора RouteRules, предназначенного для поддержки условной маршрутизации.
Практическое использование условного нулевого маршрута будет заключаться в поддержке кэширования. Используя значение переменной, установленной политикой кэша, вы можете настроить прокси-сервер API для выполнения нулевого маршрута, когда запись обслуживается из кэша.
<RouteRule name="DoNothingUnlessTheCacheIsStale"> <Condition>lookupcache.LookupCache-1.cachehit is true</Condition> </RouteRule>
Целевая конечная точка
TargetEndpoint — это исходящий эквивалент ProxyEndpoint. TargetEndpoint действует как клиент серверной службы или API — он отправляет запросы и получает ответы.
Прокси-сервер API не обязательно должен иметь TargetEndpoints. ProxyEndpoints можно настроить для прямого вызова URL-адресов. Прокси-сервер API без TargetEndpoints обычно содержит ProxyEndpoint, который либо напрямую вызывает серверную службу, либо настроен для вызова службы с использованием Java или JavaScript.
Конфигурация целевой конечной точки
/targets/default.xml
TargetEndpoint определяет исходящее соединение от Apigee Edge к другой службе или ресурсу.
Вот пример конфигурации TargetEndpoint:
<TargetEndpoint name="default"> <PreFlow/> <Flows/> <PostFlow/> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <SSLInfo/> </HTTPTargetConnection> <FaultRules/> <DefaultFaultRule/> <ScriptTarget/> <LocalTargetConnection/> </TargetEndpoint>
Элементы конфигурации TargetEndpoint
TargetEndpoint может вызвать цель одним из следующих способов:
- HTTPTargetConnection для вызовов HTTP(S)
- LocalTargetConnection для локальной цепочки прокси-серверов
- ScriptTarget для вызовов сценария Node.js , размещенного в Edge.
Настройте только один из них в TargetEndpoint.
Имя | Описание | По умолчанию | Необходимый? |
---|---|---|---|
TargetEndpoint | |||
name | Имя TargetEndpoint, которое должно быть уникальным в конфигурации прокси-сервера API. Имя TargetEndPoint используется в правиле маршрута ProxyEndpoint для направления запросов на исходящую обработку. В имени разрешено использовать следующие символы: A-Za-z0-9._\-$ % . | Н/Д | Да |
PreFlow | Определяет политики в потоке PreFlow запроса или ответа. | Н/Д | Да |
Flows | Определяет политики в условных потоках запроса или ответа. | Н/Д | Да |
PostFlow | Определяет политики в потоке PostFlow запроса или ответа. | Н/Д | Да |
HTTPTargetConnection | Со своими дочерними элементами указывает доступ к серверным ресурсам через HTTP. Если вы используете HTTPTargetConnection, не настраивайте другие типы целевых подключений (ScriptTarget или LocalTargetConnection). | ||
URL | Определяет сетевой адрес внутренней службы, на которую TargetEndpoint пересылает сообщения запроса. | Н/Д | Нет |
LoadBalancer | Определяет одну или несколько именованных конфигураций TargetServer. Именованные конфигурации TargetServer можно использовать для балансировки нагрузки, определяя 2 или более подключения конфигурации конечной точки. Вы также можете использовать TargetServers для отделения конфигураций прокси-сервера API от URL-адресов конечных точек конкретных серверных служб. | Н/Д | Нет |
Properties | Набор дополнительных параметров конфигурации HTTP можно определить как свойства <TargetEndpoint> . | Н/Д | Нет |
SSLInfo | При необходимости определите параметры TLS/SSL на TargetEndpoint, чтобы управлять соединением TLS/SSL между прокси-сервером API и целевой службой. См. Конфигурация TLS/SSL TargetEndpoint . | Н/Д | Нет |
LocalTargetConnection | С помощью своих дочерних элементов указывает ресурс, к которому необходимо получить доступ локально, минуя сетевые характеристики, такие как балансировка нагрузки и процессоры сообщений. Чтобы указать целевой ресурс, включите либо дочерний элемент APIProxy (с элементом ProxyEndpoint), либо дочерний элемент Path. Дополнительную информацию см. в разделе Объединение прокси-серверов API в цепочку . Если вы используете LocalTargetConnection, не настраивайте другие типы целевых подключений (HTTPTargetConnection или ScriptTarget). | ||
APIProxy | Указывает имя прокси-сервера API, который будет использоваться в качестве цели для запросов. Целевой прокси-сервер должен находиться в той же организации и среде, что и прокси-сервер, отправляющий запросы. Это альтернатива использованию элемента Path. | Н/Д | Нет |
ProxyEndpoint | Используется с APIProxy для указания имени ProxyEndpoint целевого прокси. | Н/Д | Нет |
Path | Указывает путь к конечной точке прокси-сервера API, который будет использоваться в качестве цели для запросов. Целевой прокси-сервер должен находиться в той же организации и среде, что и прокси-сервер, отправляющий запросы. Это альтернатива использованию APIProxy. | Н/Д | Нет |
FaultRules | Определяет, как TargetEndpoint реагирует на ошибку. Правило сбоя определяет два элемента:
См. Обработка ошибок . | Н/Д | Нет |
DefaultFaultRule | Обрабатывает любые ошибки (системные, транспортные, сообщения или политики), которые не обрабатываются явно другим FaultRule. См. Обработка ошибок . | Н/Д | Нет |
ScriptTarget | |||
ResourceURL | Определяет тип ресурса (узел) и имя основного скрипта Node.js, реализующего функциональность TargetEndpoint. Сценарий необходимо включить в файлы ресурсов вашего прокси-сервера API. См. раздел Добавление Node.js к существующему прокси-серверу API . Если вы используете ScriptTarget, не настраивайте другие типы целевых подключений (HTTPTargetConnection или LocalTargetConnection). | Н/Д | Да |
EnvironmentVariable | При необходимости передайте переменные среды в основной скрипт Node.js. См. раздел Общие сведения о поддержке Edge для модулей Node.js. | Н/Д | Нет |
Arguments | При необходимости передайте аргументы в основной скрипт Node.js. См. раздел Общие сведения о поддержке Edge для модулей Node.js. | Н/Д | Нет |
Конфигурация TLS/SSL TargetEndpoint
TargetEndpoints часто требуется управлять HTTPS-соединениями с гетерогенной внутренней инфраструктурой. По этой причине поддерживается ряд параметров конфигурации TLS/SSL.
Элементы конфигурации TLS/SSL TargetEndpoint
Имя | Описание | По умолчанию | Необходимый? |
---|---|---|---|
SSLInfo | |||
Enabled | Указывает, включен ли TLS/SSL для конечной точки. Значение по умолчанию — true , если <URL> указывает протокол HTTPS, и false , если <URL> указывает HTTP. | true, если <URL> указывает HTTPS | Нет |
TrustStore | Хранилище ключей, содержащее сертификаты доверенного сервера. | Н/Д | Нет |
ClientAuthEnabled | Параметр, включающий исходящую аутентификацию клиента (двусторонний TLS/SSL). | ЛОЖЬ | Нет |
KeyStore | Хранилище ключей, содержащее закрытые ключи, используемые для аутентификации исходящего клиента. | Н/Д | Да (если ClientAuthEnabled имеет значение true) |
KeyAlias | Псевдоним закрытого ключа, используемый для аутентификации исходящего клиента. | Н/Д | Да (если ClientAuthEnabled имеет значение true) |
Ciphers | Поддерживаемые шифры для исходящего трафика TLS/SSL. Если шифры не указаны, то будут разрешены все шифры, доступные для JVM. Чтобы ограничить шифры, добавьте следующие элементы со списком поддерживаемых шифров: <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> | Н/Д | Нет |
Protocols | Поддерживаемые протоколы для исходящего TLS/SSL. Если протоколы не указаны, то будут разрешены все протоколы, доступные для JVM. Чтобы ограничить протоколы, добавьте следующие элементы со списком поддерживаемых протоколов: <Protocols> <Protocol>TLSv1.1</Protocol> <Protocol>TLSv1.2</Protocol> </Protocols> | Н/Д | Нет |
CommonName | Если указано, значение, по которому проверяется общее имя целевого сертификата. Это значение допустимо только для конфигураций TargetEndpoint и TargetServer. Это недействительно для конфигураций VirtualHost. По умолчанию указанное значение точно соответствует общему имени целевого сертификата. Например, использование При желании Apigee может выполнить сопоставление с подстановочными знаками, используя атрибут Например, общее имя, указанное как <CommonName wildcardMatch="true">*.myhost.com</CommonName> | Н/Д | Нет |
Пример TargetEndpoint с включенной аутентификацией исходящего клиента
<TargetEndpoint name="default"> <HttpTargetConnection> <URL>https://myservice.com</URL> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>myKeystore</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore>myTruststore</TrustStore> </SSLInfo> </HttpTargetConnection> </TargetEndpoint>
Подробные инструкции см. в разделе Настройка TLS от Edge к серверной части (облако и частное облако) .
Использование переменных потока для динамической установки значений TLS/SSL
Вы также можете динамически устанавливать детали TLS/SSL для поддержки гибких требований во время выполнения. Например, если ваш прокси-сервер подключается к двум потенциально различным целям (тестовая цель и производственная цель), вы можете заставить свой прокси-сервер API программно определять, какую среду он вызывает, и динамически устанавливать ссылки на соответствующее хранилище ключей и хранилище доверенных сертификатов. В следующей статье сообщества Apigee этот сценарий объясняется более подробно и приводятся примеры развертываемых прокси-серверов API: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html .
В следующем примере установки тега <SSLInfo>
в конфигурации TargetEndpoint значения могут быть предоставлены во время выполнения, например, с помощью выноски Java, политики JavaScript или политики назначения сообщения. Используйте любые переменные сообщения, содержащие значения, которые вы хотите установить.
Переменные разрешены только в следующих элементах.
<SSLInfo> <Enabled>{myvars.ssl.enabled}</Enabled> <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled> <KeyStore>{myvars.ssl.keystore}</KeyStore> <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias> <TrustStore>{myvars.ssl.trustStore}</TrustStore> </SSLInfo>
Использование ссылок для динамической установки значений TLS/SSL
При настройке TargetEndpoint, использующей HTTPS, необходимо учитывать случай, когда срок действия сертификата TLS/SSL истекает или изменение конфигурации системы требует обновления сертификата. В установке Edge для частного облака при настройке TLS/SSL с использованием статических значений или переменных потока существует вероятность того, что вам придется перезапустить процессоры сообщений.
Дополнительные сведения см. в разделе Обновление сертификата TLS .
Однако при желании вы можете настроить TargetEndpoint для использования вместо этого ссылки на хранилище ключей или хранилище доверенных сертификатов. Преимущество использования ссылки заключается в том, что вы можете обновить ссылку, чтобы она указывала на другое хранилище ключей или хранилище доверенных сертификатов для обновления сертификата TLS/SSL без необходимости перезапускать процессоры сообщений.
Например, ниже показан TargetEndpoint, который использует ссылку на хранилище ключей:
<SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo>
Используйте следующий вызов POST API, чтобы создать ссылку с именем keystoreref :
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="keystoreref"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
В ссылке указывается имя хранилища ключей и его тип.
Для просмотра ссылки используйте следующий вызов GET API:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
Чтобы позже изменить ссылку так, чтобы она указывала на другое хранилище ключей, гарантируя, что псевдоним имеет то же имя, используйте следующий вызов PUT:
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \ -d '<ResourceReference name="keystoreref"> <Refers>myNewKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
TargetEndpoint с целевой балансировкой нагрузки
TargetEndpoints поддерживает балансировку нагрузки между несколькими именованными серверами TargetServer с использованием трех алгоритмов балансировки нагрузки.
Подробные инструкции см. в разделе Балансировка нагрузки между внутренними серверами .
Политика
Каталог /policies
в прокси-сервере API содержит все политики, доступные для прикрепления к потокам в прокси-сервере API.
Элементы конфигурации политики
Имя | Описание | По умолчанию | Необходимый? |
---|---|---|---|
Policy | |||
name | Внутреннее имя политики. В имени можно использовать следующие символы: При необходимости используйте элемент | Н/Д | Да |
enabled | Установите значение Установите значение | истинный | Нет |
continueOnError | Установите значение Установите значение | ЛОЖЬ | Нет |
async | Примечание . Этот атрибут не обеспечивает асинхронное выполнение политики. В большинстве случаев оставьте значение по умолчанию Если установлено значение Чтобы использовать асинхронное поведение в прокси-серверах API, см. Объектную модель JavaScript . | ЛОЖЬ | Нет |
Приложение к политике
На следующем изображении показана последовательность выполнения потоков прокси-сервера API:
Как показано выше:
Политики прикрепляются к Flows как этапы обработки. Имя политики используется для ссылки на политику, которая будет применяться в качестве шага обработки. Формат приложения к политике следующий:
<Step><Name>MyPolicy</Name></Step>
Политики применяются в том порядке, в котором они прикреплены к потоку. Например:
<Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step>
Элементы конфигурации вложения политики
Имя | Описание | По умолчанию | Необходимый? |
---|---|---|---|
Step | |||
Name | Имя политики, которая будет выполняться в соответствии с этим определением шага. | Н/Д | Да |
Condition | Условный оператор, определяющий, применяется ли политика или нет. Если у политики есть связанное условие, то политика выполняется только в том случае, если условный оператор имеет значение true. | Н/Д | Нет |
Потоки
ProxyEndpoint и TargetEndpoint определяют конвейер для обработки сообщений запросов и ответов. Конвейер обработки состоит из потока запросов и потока ответов. Каждый поток запросов и поток ответов подразделяется на PreFlow, один или несколько дополнительных «условных» или «именованных» потоков и PostFlow.
- PreFlow: всегда выполняется. Выполняется перед любыми условными потоками.
- PostFlow: всегда выполняется. Выполняется после любых условных потоков.
Кроме того, вы можете добавить PostClientFlow в ProxyEndpoint, который выполняется после возврата ответа запрашивающему клиентскому приложению. К этому потоку можно прикрепить только политику MessageLogging и расширение ведения журнала Google Stackdriver . PostClientFlow уменьшает задержку прокси-сервера API и делает доступной для регистрации информацию, которая не рассчитывается до тех пор, пока ответ не будет возвращен клиенту, например client.sent.start.timestamp
и client.sent.end.timestamp
. Этот поток используется в основном для измерение временного интервала между временными метками начала и окончания ответного сообщения.
Посмотрите краткое видео с инструкциями
Видео: Посмотрите это короткое видео об использовании журнала сообщений в PostClientFlow.
Вот пример PostClientFlow с прикрепленной политикой регистрации сообщений.
... <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <PostClientFlow> <Request/> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ...
Конвейер обработки прокси-сервера API выполняет потоки в следующей последовательности:
Конвейер запросов:
- Прокси-запрос PreFlow
- Условные потоки запроса прокси (необязательно)
- PostFlow запроса прокси
- Целевой запрос PreFlow
- Условные потоки целевого запроса (необязательно)
- Постфлоу целевого запроса
Канал ответа:
- Целевой ответ PreFlow
- Условные потоки целевого ответа (необязательно)
- Целевой ответ PostFlow
- PreFlow ответа прокси
- Условные потоки ответа прокси (необязательно)
- PostFlow ответа прокси
- Ответ PostClientFlow (необязательно)
Только те потоки с прикрепленными политиками необходимо настроить в конфигурациях ProxyEndpoint или TargetEndpoint. PreFlow и PostFlow необходимо указывать в конфигурации ProxyEndpoint или TargetEndpoint только в том случае, если необходимо применить политику во время обработки PreFlow или PostFlow.
В отличие от условных потоков, упорядочение элементов предварительного и постотчика не важно-прокси API всегда будет выполнять каждый в соответствующей точке трубопровода, независимо от того, где они появляются в конфигурации конечной точки.
Условные потоки
Проксиентные точки и точки TargetendEnts поддерживают неограниченное количество условных потоков (также известных как «названные потоки»).
Прокси -тесты API для условия, указанного в условном потоке, и, если условие выполняется, шаги обработки в условном потоке выполняются прокси API. Если условие не выполнено, то шаги обработки в условном потоке обходится. Условные потоки оцениваются в порядке, определенном в прокси -сервере API, и первое, чье состояние выполнено.
Определяя условные потоки, вы получаете возможность применения этапов обработки в прокси API на основе:
- Запросить URI
- Http глагол (get/pot/post/delete)
- Значение запроса параметра, заголовка и формы параметра
- Много других видов условий
Например, в следующем условном потоке указывается, что он выполняется только тогда, когда путь ресурса запроса /accesstoken
. Любой входящий запрос с путем /accesstoken
приводит к выполнению этого потока, а также любые политики, которые прикрепляются к потоку. Если путь запроса не включает суффикс /accesstoken
, то поток не выполняется (хотя может быть другой условный поток).
<Flows> <Flow name="TokenEndpoint"> <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> </Flow> </Flows>
Элементы конфигурации потока
Имя | Описание | По умолчанию | Необходимый? |
---|---|---|---|
Flow | Программа обработки запроса или обработки ответов, определяемый ProxyendPoint или TargetEndPoint | ||
Name | Уникальное название потока. | Н/Д | Да |
Condition | Условное утверждение, которое оценивает или более переменных, чтобы оценить истинную или ложную. Все потоки, отличные от предопределенных типов префального и постфтоуда, должны определить условие для их выполнения. | Н/Д | Да |
Request | Трубопровод, связанный с обработкой сообщений запроса | Н/Д | Нет |
Response | Трубопровод, связанный с обработкой сообщений ответа | Н/Д | Нет |
Шаг обработка
Последовательное упорядочение условных потоков применяется Apigee Edge. Условные потоки выполняются сверху вниз. Первый условный поток, состояние которого оценивается в true
, выполняется, и выполняется только один условный поток.
Например, в следующей конфигурации потока любой входящий запрос, который не включает в себя суффикс пути /first
или /second
, приведет к выполнению ThirdFlow
, обеспечивая соблюдение политики, называемой Return404
.
<Flows> <Flow name="FirstFlow"> <Condition>proxy.pathsuffix MatchesPath "/first"</Condition> <Request> <Step><Name>FirstPolicy</Name></Step> </Request> </Flow> <Flow name="SecondFlow"> <Condition>proxy.pathsuffix MatchesPath "/second"</Condition> <Request> <Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step> </Request> </Flow> <Flow name="ThirdFlow"> <Request> <Step><Name>Return404</Name></Step> </Request> </Flow> </Flows>
Ресурсы
«Ресурсы» (файлы ресурсов для использования в прокси API) - это скрипты, код и преобразования XSL, которые могут быть прикреплены к потокам с использованием политик. Они появляются в разделе «Скрипты» редактора прокси API в пользовательском интерфейсе управления.
См. Файлы ресурсов для поддерживаемых типов ресурсов.
Ресурсы могут храниться в прокси, среде или организации API. В каждом случае на ресурс ссылается имя в политике. Услуги API разрешают название, переходя от прокси API, к окружающей среде, к уровню организации.
Ресурс, хранящийся на уровне организации, может быть направлен на политику в любой среде. На ресурс, хранящийся на уровне окружающей среды, можно ссылаться на политику в этой среде. На ресурс, хранящийся на уровне прокси API, может быть ссылается только политиками в этом прокси API.