Red de conocimiento informático - Problemas con los teléfonos móviles - Configuración de la puerta de enlace SpringCloud

Configuración de la puerta de enlace SpringCloud

El cliente envía una solicitud a la puerta de enlace, y el controlador de la puerta de enlace asigna y enruta la solicitud al controlador web de la puerta de enlace, que maneja una serie de filtros asociados con la solicitud. Los filtros se dividen en lógica de procesamiento "previo" y "posterior".

Existen dos formas de configurar preferencias y filtros: abreviada y expansión totalmente parametrizada.

Fórmula: nombre=nombre, expresión regular, por ejemplo

Si configura el archivo yaml estándar, generalmente hay dos claves nombre y argumentos, args es el valor clave de la configuración del grupo predicado o filtro Mapeo derecho. Como se muestra a continuación:

Cada ruta se juzga en función de diferentes atributos de la solicitud HTTP.

**

El valor es una expresión regular

El valor es una expresión regular

Cada host utiliza el formato estilo Ant. separados por .

Los parámetros incluyen Spring PathMatcherpatterns y un delimitador matchOptionalTrailingSeparator opcional.

Las reglas anteriores pueden coincidir con rutas como /red/1/red/blue/blue/green.

Las variables de plantilla (como segmentos) en el URI se extraen y almacenan como pares clave-valor en ServerWebExchange.getAttributes() con la clave ServerWebExchangeUtils.URI_TEMPLATE_VARIABLES_ATTRIBUTE. Estos valores se pueden obtener mediante la fábrica GatewayFilter. Existe un método de utilidad para obtener estos valores de manera más conveniente. Como se muestra a continuación

El valor es una expresión regular

formateada como una anotación CIDR, como 192.168.0.1/16, donde 192.168.0.1 es la IP y 16 es la máscara de subred. .

Configura dos parámetros: grupo y peso (valor).

La configuración anterior enviará solicitudes de 80 a Weighthigh.org y 20 a Weightlow.org.

Para agregar parámetros en encabezados de solicitud, puede usar variables URI

Para agregar parámetros en consultas, puede usar variables URI

Para agregar parámetros en encabezados de respuesta Parámetros, puede usar variables URI

Eliminar parámetros de encabezado de respuesta duplicados

La configuración anterior eliminará los valores duplicados de los parámetros Access-Control-Allow-Credentials y Access-Control-Allow-Origin.

Puede establecer el valor de la política para modificar la política de eliminación predeterminada, que por defecto es RETAIN_FIRST, lo que significa mantener la primera. Otras estrategias incluyen RETAIN_LAST, RETAIN_UNIQUE.

Enrutamiento de interrupción ligero

Los nombres de los parámetros en los encabezados se pueden reemplazar, por ejemplo, Blue:abc se reemplazará con X-Request-Red:abc

Agregar un prefijo, por ejemplo, /hola, se enviará a /miruta/hola.

RequestRateLimiter GatewayFilter Factory

Al implementar la interfaz RateLimiter para configurar reglas de limitación de tráfico, puede usar el parámetro keyResolver para establecer una clave de limitación de tráfico específica. El valor predeterminado ahora es PrincipalNameKeyResolver, que. se utiliza en ServerWebExchange llamado Principal.getName().

Si la clave está vacía después del análisis, la solicitud será rechazada. Puede personalizar la política configurando los siguientes parámetros

spring.cloud.gateway.filter.request-rate-limiter.deny-empty-key (true o false) spring.cloud.gateway.filter.request - rate-limiter.deny-empty-key-status-code

Límite de flujo de Redis, utilizando el algoritmo de depósito de tokens.

redis-rate-limiter.replenishRate ¿Cuántas solicitudes hay por segundo y con qué frecuencia ingresa el token al depósito?

redis-rate-limiter.burstSolicitud de pico de capacidad.

redis-rate-limiter.requestsTokens La cantidad de tokens consumidos para cada solicitud, el valor predeterminado es 1.

Si desea mantener una frecuencia de solicitudes estable, puede establecer replenishRate y burstCapacity en el mismo valor; si tiene una gran cantidad de solicitudes de ráfaga, debe configurar burstCapacity para que sea mayor que replenishRate.

Si desea establecer 1 solicitud por minuto, puede lograrlo a través de la siguiente configuración

replenishRate=1

requestTokens=60

burstCapacity=60

También puedes implementar tu propio RateLimiter y KeyResolver

Configurar el estado de los parámetros y la URL

Eliminar los parámetros del encabezado de solicitud especificados

Eliminar los parámetros del encabezado de respuesta especificados

Eliminar los parámetros de solicitud

Reescribir la ruta

La configuración anterior cambiará /red/blue a /blue

/rojo/azul se cambiará a /azul

Reemplazar el valor del parámetro del encabezado de solicitud

Reemplazar el valor del parámetro del encabezado de respuesta

Establecer código de estado

Ambas configuraciones anteriores establecerán el código de estado en 401

Eliminar el prefijo

La configuración anterior cambiará /name/blue/red a nameservice/red .

Referencia

https://cloud.spring.io/spring-cloud-gateway/reference/html/#the-path-route-predicate-factory