Фильтр — это обработчик запросов и ответов. Несколько фильтров можно объединить в цепочку, при этом каждый фильтр после обработки входного запроса или ответа возвращает строку. Пустой результат означает, что текущий фильтр успешно обработал входные данные и они могут быть переданы следующему фильтру в цепочке. Непустой результат указывает на необходимость дополнительных действий со стороны цепочки фильтров или предыдущего фильтра.
APIAggregator пересылает один запрос нескольким HTTP-конвейерам API в одном пространстве имён и объединяет ответы.
Ниже приведён пример конфигурации, которая пересылает запрос двум конвейерам: http-pipeline-1
и http-pipeline-2
. При пересылке запроса http-pipeline-2
метод запроса изменяется на GET
, а новый заголовок Original-Method
добавляется с исходным методом запроса. Два ответа объединяются в один перед возвратом клиенту.
kind: APIAggregator
name: api-aggregator-example
mergeResponse: true
pipelines:
- name: http-pipeline-1
- name: http-pipeline-2
method: GET
header:
add:
Original-Method: "[[filter.api-aggregator-example.req.method]]"
disableBody: false
| Имя | Тип | | Описание | Требуется | | -------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- | | maxBodyBytes | int64 | Верхний предел размера тела запроса, по умолчанию равен 0, что означает отсутствие ограничения | Нет | | partialSucceed | bool | Определяет, будет ли результат исходного запроса считаться успешным при сбое запроса к некоторым из конвейеров API, по умолчанию имеет значение false | Нет | | timeout | string | Длительность тайм-аута для запросов к прокси API | Нет | | mergeResponse | bool | Определяет, будут ли несколько объектов ответа объединены в один, по умолчанию равно false, что означает, что окончательный ответ представляет собой массив ответов от прокси API | Нет | | pipelines | []apiaggregator.Pipeline | Конфигурация прокси API | Да |
Значение | Описание |
---|---|
failed | APIAggregator не смог обработать запрос |
Фильтр «Прокси» является прокси-сервером для внутреннего сервиса.
Ниже представлена одна из самых простых конфигураций прокси, которая перенаправляет запросы на http://127.0.0.1:9095
.
kind: Proxy
name: proxy-example-1
mainPool:
servers:
- url: http://127.0.0.1:9095
Помимо mainPool
, можно также настроить candidatePools
, если это так, то прокси сначала проверяет, может ли один из пулов кандидатов обработать запрос. Например, пул кандидатов в следующей конфигурации случайным образом выбирает и обрабатывает 30‰ запросов, а основной пул обрабатывает остальные 970‰ запросов.
kind: Proxy
name: proxy-example-2
mainPool:
servers:
- url: http://127.0.0.1:9095
candidatePools:
- servers:
- url: http://127.0.0.2:9095
probability:
perMill: 30
policy: random
Серверы пула также могут быть динамически настроены через обнаружение служб, следующая конфигурация получает список серверов через serviceRegistry
и serviceName
, и выбираются только серверы с тегом v2
.
kind: Proxy
name: proxy-example-3
mainPool:
serverTags: ["v2"]
serviceName: service-001
serviceRegistry: eureka-service-registry-example
Когда в пуле несколько серверов, прокси может выполнять балансировку нагрузки между ними:
kind: Proxy
name: proxy-example-4
mainPool:
serverTags: ["v2"]
serviceName: service-001
serviceRegistry: eureka-service-registry-example
loadBalance:
policy: roundRobin
headerHashKey: X-User-Id
| Имя | Тип | Описание | Требуется |
| -------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | | Отправлять запрос или получать ответ об ошибке | Нет |
| Основной пул | proxy.PoolSpec | Основной пул бэкенд-серверов | Да |
| Пулы кандидатов | []proxy.PoolSpec | Одна или несколько конфигураций пулов, похожих на mainPool
, но с настроенными параметрами filter
. Когда Proxy
получает запрос, он сначала проходит через пулы в candidatePools
, и если один из пулов фильтрует запрос, серверы этого пула обрабатывают запрос, в противном случае запрос передаётся в mainPool
| Нет |
| Зеркальный пул | proxy.PoolSpec | Определение зеркального пула, запросы отправляются в этот пул одновременно, когда они отправляются в пулы кандидатов или основной пул | Нет |
| Коды ошибок | []int | Необходимо обрабатывать HTTP-коды состояния как ошибки | Нет |
| Сжатие | proxy.CompressionSpec | Опции сжатия ответов | Нет |
Значение | Описание |
---|---|
fallback | Выполнены шаги отката |
internalError | Встречается внутренняя ошибка |
clientError | Ошибка сети на стороне клиента (Easegress) |
serverError | Ошибка сети на сервере |
Фильтр Bridge перенаправляет запросы из одного конвейера в другие конвейеры или HTTP-прокси под HTTP-сервером.
Входящий фильтр устанавливает целевой конвейер/прокси в заголовке запроса X-Easegress-Bridge-Dest
. Bridge извлекает значение заголовка и пытается сопоставить его с конфигурацией. Он отправляет запрос, если совпадение найдено, и прерывает процесс, если совпадения нет. Если в конфигурации фильтра нет заголовка с именем X-Easegress-Bridge-Dest
, он выбирает первый пункт назначения.
Ниже приведён пример конфигурации с двумя пунктами назначения.
kind: Bridge
name: bridge-example
destinations: ["pipeline1", "pipeline2"]
Имя | Тип | Описание | Требуется |
---|---|---|---|
пункты назначения | []string | Имена пунктов назначения конвейера/прокси | Да |
Значение | Описание |
---|---|
пункт назначения не найден | Не найден желаемый пункт назначения |
сбой вызова пункта назначения | Не удалось вызвать пункт назначения |
CORSAdaptor обрабатывает предварительный запрос CORS для бэкенд-сервиса.
Приведённая ниже конфигурация обрабатывает предварительный GET
-запрос от *.megaease.com
. Конфигурация
Наименование | Тип | Описание | Требуется |
---|---|---|---|
allowedOrigins | []string | Массив источников, из которых может быть выполнен междоменный запрос. Если в списке присутствует специальное значение «», все источники будут разрешены. Источник может содержать подстановочный знак (), чтобы заменить 0 или более символов (например: http://.domain.com). Использование подстановочных знаков подразумевает небольшое снижение производительности. В источнике можно использовать только один подстановочный знак. Значение по умолчанию — «» | Нет |
allowedMethods | []string | Массив методов, которые клиент может использовать для междоменных запросов. Значение по умолчанию — простые методы (HEAD, GET и POST) | Нет |
allowedHeaders | []string | Массив непростых заголовков, которые клиент может использовать с междоменными запросами. Если в списке есть специальное значение «*», будут разрешены все заголовки. Значение по умолчанию — [], но к списку всегда добавляется «Origin» | Нет |
allowCredentials | bool | Указывает, может ли запрос включать учётные данные пользователя, такие как файлы cookie, HTTP-аутентификация или клиентские SSL-сертификаты | Нет |
exposedHeaders | []string | Указывает, какие заголовки безопасно раскрывать API спецификации CORS API | Нет |
Результаты
Значение | Описание |
---|---|
preflighted | Запрос является предварительным и был успешно обработан |
Фильтр Fallback имитирует ответ в качестве резервного действия других фильтров. Приведённая ниже конфигурация имитирует ответ с указанным кодом состояния, заголовками и телом.
kind: Fallback
name: fallback-example
mockCode: 200
mockHeaders:
Content-Type: application/json
mockBody: '{"message": "The feature turned off, please try it later."}'
Наименование | Тип | Описание | Требуется |
---|---|---|---|
mockCode | int | Этот код перезаписывает код состояния исходного ответа | Да |
mockHeaders | map[string]string | Заголовки, добавляемые/устанавливаемые в исходный ответ | Нет |
mockBody | |||
urls | []resilience.URLRule | Массив критериев соответствия запросов и политики, применяемой к соответствующим запросам. Обратите внимание, что для каждого элемента массива создаётся отдельный экземпляр CircuitBreaker, даже если два или более элементов могут ссылаться на одну и ту же политику | Да |
Значение | Описание |
---|---|
shortCircuited | Запрос был прерван |
RateLimiter защищает бэкенд-сервис для обеспечения высокой доступности и надёжности, ограничивая количество запросов, отправляемых сервису в течение настроенного периода времени.
В приведённой ниже конфигурации запросы GET, POST, PUT, DELETE к пути, который соответствует регулярному выражению ^/pets/\d+$, ограничены 50 запросами за 10 мс, и запрос завершается ошибкой, если он не может быть разрешён в течение 100 мс из-за большого количества одновременных запросов.
kind: RateLimiter
name: rate-limiter-example
policies:
- name: policy-example
timeoutDuration: 100ms
limitRefreshPeriod: 10ms
limitForPeriod: 50
defaultPolicyRef: policy-example
urls:
- methods: [GET, POST, PUT, DELETE]
url:
regex: ^/pets/\d+$
policyRef: policy-example
Имя | Тип | Описание | Требуется |
---|---|---|---|
policies | []ratelimiter.Policy | Определения политик | Да |
defaultPolicyRef | string | Политика по умолчанию, если ни для одного из urls не настроена policyRef , используется эта политика |
Нет |
urls | []resilience.URLRule | Массив критериев соответствия запроса и применяемой политики. Обратите внимание, что для каждого элемента массива создаётся отдельный экземпляр RateLimiter, даже если два или более элемента могут ссылаться на одну и ту же политику | Да |
Значение | Описание |
---|---|
rateLimited | Запрос отклонён из-за ограничения скорости |
TimeLimiter ограничивает время запросов, запрос отменяется, если ответ не получен в настроенное время.
Приведённая ниже конфигурация помечает запрос POST к пути /users/1
как тайм-аут, если ответ не будет получен в течение 500 мс.
kind: TimeLimiter
name: time-limiter-example
urls:
- methods: [POST]
url:
exact: /users/1
timeoutDuration: 500ms
Название | Тип | Описание | Требуется |
---|---|---|---|
defaultTimeoutDuration | string | Настроенное время ожидания по умолчанию, используется, если timeoutDuration не настроен для одного из urls . По умолчанию — 500мс |
Нет |
urls | []timelimiter.URLRule | Массив критериев соответствия запроса и |
Примечание: в ответе были сохранены оригинальное форматирование текста и спецсимволы. Политика, применяемая к соответствующим запросам | Да |
Значение | Описание |
---|---|
timeout | Запрос истёк по времени |
Retryer повторяет неудачные запросы в соответствии с настроенной политикой.
Ниже приведён пример конфигурации, которая повторяет запросы GET
, POST
, PUT
и DELETE
к путям, начинающимся с /books/
, когда код состояния ответа равен 500, 503 или 504, максимальное количество попыток равно 3, а базовая продолжительность ожидания между попытками составляет 500 мс.
kind: Retryer
name: retryer-example
policies:
- name: policy-example
maxAttempts: 3
waitDuration: 500ms
failureStatusCodes: [500, 503, 504]
defaultPolicyRef: policy-example
urls:
- methods: [GET, POST, PUT, DELETE]
url:
prefix: /books/
policyRef: policy-example
Имя | Тип | Описание | Требуется |
---|---|---|---|
policies | []retryer.Policy | Определения политик | Да |
defaultPolicyRef | string | Политика по умолчанию, если ни в одном из urls не настроена политика policyRef , используется эта политика |
Нет |
urls | []resilience.URLRule | Массив критериев соответствия запросов и политики, применяемых к соответствующим запросам | Да |
Фильтр всегда возвращает результат своего последующего фильтра, и результат последней попытки возвращается, когда есть две или более попытки.
ResponseAdaptor изменяет исходный ответ в соответствии с конфигурацией перед его возвратом.
Ниже приведена конфигурация, которая добавляет заголовок с именем X-Response-Adaptor
со значением response-adaptor-example
в ответы.
kind: ResponseAdaptor
name: response-adaptor-example
header:
add:
X-Response-Adaptor: response-adaptor-example
Имя | Тип | Описание | Требуется |
---|---|---|---|
header | httpheader.AdaptSpec | Правила для изменения заголовка запроса | Нет |
body | string | Если указано, тело исходного запроса заменяется значением этого параметра. Примечание: тело может быть шаблоном, что означает, что переменные времени выполнения (заключённые в [[ & ]] ) заменяются их фактическими значениями |
Нет |
Фильтр всегда возвращает пустой результат.
Validator фильтрует запросы, пересылает действительные и отклоняет недействительные. На данный момент поддерживаются четыре метода проверки (headers
, jwt
, signature
и oauth2
), которые можно использовать вместе или по отдельности. Когда используются два или более методов вместе, запрос должен пройти все из них, чтобы быть пересланным.
Ниже представлена конфигурация для метода проверки headers
. Запросы, имеющие заголовок с именем Is-Valid
со значением abc
или goodplan
или соответствующие регулярному выражению ^ok-.+$
, считаются действительными. Конфигурация
Название | Тип | Описание | Требуется |
---|---|---|---|
headers | map[string]httpheader.ValueValidator | Правила проверки заголовков, ключ — это имя заголовка, а значение — правило проверки соответствующего значения заголовка. Запрос должен пройти все правила проверки, чтобы пройти проверку «headers». | Нет |
jwt | validator.JWTValidatorSpec | Правило проверки JWT, проверяет строку токена JWT из заголовка «Authorization» или файлов cookie. | Нет |
signature | signer.Spec | Правило проверки подписи, реализует совместимый с Amazon Signature V4 валидатор проверки подписи, с настраиваемыми литеральными строками. | Нет |
oauth2 | validator.OAuth2ValidatorSpec | Метод OAuth/2 поддерживает режим «Token Introspection» и режим «Self-Encoded Access Tokens», одновременно можно настроить только один режим. | Нет |
Результаты
Значение | Описание |
---|---|
invalid | Запрос не проходит проверку. |
Фильтр WasmHost реализует среду хоста для пользовательского кода WebAssembly. Ниже приведён пример конфигурации, которая загружает код wasm из файла, более подробную информацию можно найти в этом документе.
name: wasm-host-example
kind: WasmHost
maxConcurrency: 2
code: /home/megaease/wasm/hello.wasm
timeout: 200ms
Примечание: этот фильтр отключён в стандартной сборке Easegress, его можно включить с помощью команд:
$ make GOTAGS=wasmhost
или
$ go build -tags=wasmhost
Имя | Тип | Описание | Требуется |
---|---|---|---|
maxConcurrency | int32 | Максимальное количество запросов, которые фильтр может обрабатывать одновременно. По умолчанию — 10, минимальное значение — 1. | Да |
code | string | Код wasm, может быть кодом в кодировке base64 или путём/URL файла, содержащего код. |
Наименование | Тип | Описание | Требуется |
---|---|---|---|
forCodes | bool | Когда true, fallback обрабатывает коды состояния HTTP, перечисленные в failureCodes, по умолчанию — false | Нет |
mockCode | int | См. фильтр Fallback (filters.md#Fallback) | Да |
mockHeaders | map[string]string | См. фильтр Fallback (filters.md#Fallback) | Нет |
mockBody | string | См. фильтр Fallback (filters.md#Fallback) | Нет |
Наименование | Тип | Описание | Требуется |
---|---|---|---|
spanName | string | Имя диапазона для трассировки, если не указано, используется URL целевого сервера | Нет |
serverTags | []string | Теги селектора серверов, только серверы с тегами в этом массиве включены в этот пул | Нет |
servers | []proxy.Server | Массив статических серверов. Если опущено, должны быть указаны serviceName и serviceRegistry, и наоборот | Нет |
serviceName | string | Этот параметр и serviceRegistry предназначены для динамического обнаружения сервера | Нет |
serviceRegistry | string | Этот параметр и serviceName предназначены для динамического обнаружения сервера | Нет |
loadBalance | proxy.LoadBalance | Варианты балансировки нагрузки | Да |
memoryCache | memorycache.Spec | Параметры кэширования ответов | Нет |
filter | httpfilter.Spec | Опции фильтрации для пулов кандидатов | Нет |
Наименование | Тип | Описание | Требуется |
---|---|---|---|
url | string | Адрес сервера | Да |
tags | []string | Метки этого сервера, см. serverTags в proxy.PoolSpec | Нет |
weight | int | При политике балансировки нагрузки weightedRandom это значение используется для расчёта вероятности этого сервера | Нет |
| Наименование | Тип | Описание | Требуется |
| ------------- | ------ | ----------------------------------------------------------------------------------------------------------- | -------- | | Имя | Тип | Описание | Требуется |
| --- | --- | --- | --- |
| Load balance policy, допустимые значения: roundRobin
, random
, weightedRandom
, ipHash
и headerHash
| Да | Политика балансировки нагрузки. Допустимые значения: roundRobin, random, weightedRandom, ipHash и headerHash | Нет |
| headerHashKey | строка | Когда политика — headerHash, эта опция является именем заголовка, значение которого используется для расчёта хеша | Нет |
Имя | Тип | Описание | Требуется |
---|---|---|---|
codes | []int | Коды состояния HTTP, которые должны быть кэшированы | Да |
expiration | строка | Срок действия записей в кэше | Да |
maxEntryBytes | uint32 | Максимальный размер тела ответа, ответ с большим телом никогда не кэшируется | Да |
methods | []string | Методы HTTP-запросов, которые должны быть кэшированы | Да |
Если настроены критерии заголовков, запрос фильтруется, если он соответствует как заголовкам, так и URL-адресам. Если критерии заголовков НЕ настроены, используются параметры вероятности.
Имя | Тип | Описание | Требуется |
---|---|---|---|
headers | map[string]urlrule.StringMatch | Фильтр запросов по заголовкам. Ключ этой карты — имя заголовка, а значение этой карты — критерии соответствия значению заголовка | Нет |
urls | []urlrule.URLRule | Критерии соответствия URL-адреса запроса | Нет |
probability | httpfilter.Probability | Параметры для фильтрации запросов по вероятности | Нет |
Отношение между exact
, prefix
и regex
— ИЛИ
.
Имя | Тип | Описание | Требуется |
---|---|---|---|
exact | строка | Строка должна быть идентична значению этого поля | Нет |
prefix | строка | Строка должна начинаться со значения этого поля | Нет |
regex | строка | Строка должна соответствовать регулярному выражению, указанному значением этого поля | Нет |
Отношение между методами и URL — И
.
Имя | Тип | Описание | Требуется |
---|---|---|---|
методы | []string | Критерии метода HTTP, по умолчанию пустой список означает все методы | Нет |
url | urlrule.StringMatch | Критерии для сопоставления URL | Да |
Отношение между методами и URL — И
.
Имя | Тип | Описание | Требуется |
---|---|---|---|
методы | []string | Критерии метода HTTP, по умолчанию пустой список означает все методы | Нет |
url | urlrule.StringMatch | Критерии для сопоставления URL Соответствие URL | |
Да | |||
--- | |||
policyRef | строка | Имя политики отказоустойчивости для сопоставленных запросов | Нет |
Имя | Тип | Описание | Требуется |
---|---|---|---|
perMill | uint32 | Целевой фильтр в соотношении, в процентах | Да |
policy | строка | Политика рандомизации, допустимые значения: ipHash , headerHash и random
|
Да |
headerHashKey | строка | Когда policy — headerHash , эта опция — это имя заголовка, значение которого используется для расчёта хэша |
Нет |
Имя | Тип | Описание | Требуется |
---|---|---|---|
minLength | int | Минимальный размер тела ответа, который будет сжат; ответ с меньшим телом никогда не сжимается | Да |
Имя | Тип | Описание | Требуется |
---|---|---|---|
code | int | Код состояния HTTP смоделированного ответа | Да |
path | строка | Критерии соответствия пути, если путь запроса является значением этой опции, то ответ на запрос моделируется в соответствии с этим правилом | Нет |
pathPrefix | строка | Критерии соответствия префикса пути, если путь запроса начинается со значения этой опции, то ответ на запрос моделируется в соответствии с этим правилом | Нет |
delay | строка | Длительность задержки, для моделирования времени обработки запроса | Нет |
headers | map[string]string | Заголовки смоделированного ответа | Нет |
body | строка | Тело смоделированного ответа, по умолчанию — пустая строка | Нет |
Имя | Тип | Описание | Требуется |
---|---|---|---|
name | строка | Имя политики. Должно быть уникальным в одной конфигурации CircuitBreaker | Нет |
Скользящее окно (slidingWindowType) | строка | Тип скользящего окна, которое используется для записи результатов запросов, когда автоматический выключатель (CircuitBreaker) находится в состоянии CLOSED . Скользящее окно может быть либо COUNT_BASED , либо TIME_BASED . Если скользящее окно COUNT_BASED , записываются и агрегируются последние slidingWindowSize запросов. Если скользящее окно TIME_BASED , то записываются и агрегируются запросы за последние slidingWindowSize секунд. По умолчанию используется COUNT_BASED
|
Нет |
Порог частоты отказов (failureRateThreshold) | int8 | Порог частоты отказов в процентах. Когда частота отказов равна или превышает порог, автоматический выключатель переходит в состояние OPEN и начинает замыкать запросы накоротко. По умолчанию 50 |
Нет |
Порог медленных вызовов (slowCallRateThreshold) | int8 | Порог медленной скорости в процентах. Автоматический выключатель считает запрос медленным, если его длительность больше slowCallDurationThreshold . Когда процент медленных запросов равен или превышает пороговое значение, автоматический выключатель переходит в состояние OPEN и начинает замыкать запросы накоротко. По умолчанию 100 |
Нет |
Учёт сетевых ошибок (countingNetworkError) | bool | Учитывать ли сетевые ошибки как отказы. По умолчанию false | Нет |
Размер скользящего окна (slidingWindowSize) | uint32 | Размер скользящего окна, который используется для записи результатов запросов, когда автоматический выключатель находится в состоянии CLOSED . По умолчанию 100 |
Нет |
Разрешённое количество вызовов в полуоткрытом состоянии (permittedNumberOfCallsInHalfOpenState) | uint32 | Количество разрешённых запросов, когда автоматический выключатель находится в HALF_OPEN состоянии. По умолчанию 10 |
Нет |
Минимальное количество вызовов (minimumNumberOfCalls) | uint32 | Минимальное количество запросов, которые требуются (за период скользящего окна), прежде чем автоматический выключатель сможет рассчитать частоту отказов или частоту медленных запросов. Например, если minimumNumberOfCalls равно 10, то должно быть записано не менее 10 запросов, прежде чем можно будет рассчитать частоту отказов. Если было записано только 9 запросов, автоматический выключатель не перейдёт в состояние OPEN , даже если все 9 запросов завершились неудачно. По умолчанию 10 |
Нет |
Максимальная продолжительность ожидания в полуоткрытом состоянии (maxWaitDurationInHalfOpenState) | string | Максимальная продолжительность ожидания, которая контролирует максимальное время, в течение которого автоматический выключатель может оставаться в состоянии HALF_OPEN , прежде чем он переключится в состояние OPEN . Значение 0 означает, что автоматический выключатель будет бесконечно ждать в состоянии HALF_OPEN , пока не будут выполнены все разрешённые запросы. По умолчанию 0 |
Нет |
Продолжительность ожидания в открытом состоянии (waitDurationInOpenState) | string | Время, которое автоматический выключатель должен подождать, прежде чем перейти из состояния OPEN в состояние HALF_OPEN . По умолчанию 60 с failureStatusCodes — []int — коды состояния HTTP, которые необходимо считать отказами. |
Имя | Тип | Описание | Требуется |
---|---|---|---|
name | string | имя политики. Должно быть уникальным в одной конфигурации RateLimiter | Да |
timeoutDuration | string | максимальная длительность ожидания запроса разрешения на прохождение через RateLimiter. Запрос завершается ошибкой, если он не может получить разрешение в течение этого времени. По умолчанию 100 мс | Нет |
limitRefreshPeriod | string | период обновления лимита. После каждого периода RateLimiter устанавливает счётчик разрешений обратно на значение limitForPeriod. По умолчанию 10 мс | Нет |
limitForPeriod | int | количество разрешений, доступных за один limitRefreshPeriod. По умолчанию 50 | Нет |
| Имя | Тип | Описание | Требуется | | --- | --- --- | --- --- | --- | | methods | []string | критерии метода HTTP. По умолчанию пустой список означает все методы | Нет | | url | urlrule.StringMatch | критерии соответствия URL | Да | | timeoutDuration | string | длительность тайм-аута для соответствующих запросов. По умолчанию 500 мс | Нет |
| Имя | Тип | Описание | Требуется |
| --- | --- --- | --- --- | ------ |
| name | string | имя политики. Должен быть уникальным в конфигурации Retryer | Да |
| countingNetworkError | bool | учёт сетевой ошибки как сбоя или нет. По умолчанию false | Нет |
| failureStatusCodes | []int | коды состояния HTTP, которые должны считаться сбоями | Нет |
| maxAttempts | int | максимальное количество попыток | Количество попыток (включая начальную). По умолчанию — 3 | Нет |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Длительность ожидания | строка | Базовая длительность ожидания между попытками. По умолчанию — 500 мс | Нет |
| Политика отката | строка | Политика отката для длительности ожидания, может быть EXPONENTIAL
или RANDOM
, по умолчанию — RANDOM
. Если настроено как EXPONENTIAL
, базовая длительность ожидания после каждой неудачной попытки становится в 1,5 раза больше | Нет |
| Коэффициент рандомизации | float64 | Коэффициент рандомизации для фактической длительности ожидания, число в интервале [0, 1]
, по умолчанию равен 0. Фактическая длительность ожидания — случайное число в интервале [(базовая длительность ожидания) * (1 - коэффициент рандомизации), (базовая длительность ожидания) * (1 + коэффициент рандомизации)]
| Нет |
Имя | Тип | Описание | Требуется |
---|---|---|---|
values | []string | Массив строк. Если одно из значений заголовка любого заголовка запроса найдено в массиве, запрос считается прошедшим проверку текущего правила | Нет |
regexp | string | Регулярное выражение. Если значение одного из заголовков запроса соответствует этому регулярному выражению, запрос считается прошедшим проверку текущего правила | Нет |
Имя | Тип | Описание | Требуется |
---|---|---|---|
cookieName | string | Имя файла cookie. Если этот параметр установлен и файл cookie существует, его значение используется в качестве строки токена, в противном случае используется заголовок Authorization
|
Нет |
algorithm | string | Алгоритм проверки: поддерживаются HS256 , HS384 и HS512
|
Да |
secret | string | Секрет для проверки в шестнадцатеричном кодировании | Да |
Имя | Тип | Описание | Требуется |
---|---|---|---|
literal | signer.Literal | Строки литералов для настройки, используется значение по умолчанию, если опущено | Нет |
excludeBody | bool | Исключить тело запроса из расчёта подписи, по умолчанию — false
|
Нет |
ttl | string | Время жизни подписи, по умолчанию 0 означает, что подпись никогда не истекает | Нет |
accessKeys | map[string]string | Карта идентификатора ключа доступа к секрету ключа доступа | Да |
| Имя | Тип | Описание | Требуется | |
Примечание: в ответе сохранены оригинальное форматирование текста и спецсимволы. | Область суффикса | Алгоритм имени | Алгоритм значения | Подписанные заголовки | подпись | дата | истекает срок действия | учётные данные | contentSha256 | Префикс ключа подписи | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Строка | Строка | строка | строка | строка | строка | строка | строка | строка | строка | | Последняя часть для построения области учётных данных, по умолчанию — «megaease_request», в Amazon Signature V4 — «aws4_request» | Имя алгоритма запроса в запросе, по умолчанию — X-Me-Algorithm, в Amazon Signature V4 — X-Amz-Algorithm | Заголовок/значение запроса алгоритма для запроса, по умолчанию — ME-HMAC-SHA256, в Amazon Signature V4 — AWS4-HMAC-SHA256 | Заголовок/запрос заголовков подписанных заголовков, по умолчанию — X-Me-SignedHeaders, в Amazon Signature V4 — X-Amz-SignedHeaders | Имя запроса подписи, по умолчанию — X-Me-Signature, в Amazon Signature V4 — X-Amz-Signature | Заголовок/имя запроса времени, по умолчанию — X-Me-Date, в Amazon Signature V4 — X-Amz-Date | Имя запроса срока действия, по умолчанию — X-Me-Expires, в Amazon Signature V4 — X-Amz-Expires | Имя запроса учётных данных, по умолчанию — X-Me-Credential, в Amazon Signature V4 — X-Amz-Credential | Заголовок имени хэша тела/полезной нагрузки, по умолчанию — X-Me-Content-Sha256, в Amazon Signature V4 — X-Amz-Content-Sha256 | Префикс добавляется к секрету ключа доступа при получении ключа подписи, по умолчанию — ME, в Amazon Signature V4 — AWS4 |
Имя | Тип | Описание | Требуется |
---|---|---|---|
tokenIntrospect | validator.OAuth2TokenIntrospect | Конфигурация для режима Token Introspection | Нет |
jwt | validator.OAuth2JWT | Конфигурация для режима Self-Encoded Access Tokens | Нет |
Имя | Тип | Описание | Требуется |
---|---|---|---|
endPoint | строка | Конечная точка сервера интроспекции токенов | Да |
clientId | строка | Идентификатор клиента Easegress на сервере интроспекции токенов | Нет |
clientSecret | строка | Секрет клиента Easegress | Нет |
basicAuth | строка | Если не указан clientId и указана эта опция, её значение используется для базовой авторизации с сервером интроспекции токенов | Нет |
insecureTls | bool | Указывает, является ли соединение между Easegress и сервером интроспекции токенов небезопасным TLS |
Имя | Тип | Описание | Требуется |
---|---|---|---|
algorithm | string | Алгоритм для валидации, поддерживаются HS256 , HS384 и HS512
|
Да |
secret | string | Секрет для валидации в шестнадцатеричном кодировании | Да |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )