Configuración y modificación de encabezados comunes en Nginx

En nginx, a menudo es necesario modificar el encabezado por varias razones, por lo que hoy ordenaré algunas instrucciones del encabezado en nginx

header es el encabezado del mensaje en http, que contiene mucha información, generalmente dividida en encabezados de solicitud (encabezado de solicitud) y encabezados de respuesta (encabezado de respuesta)

La solicitud enviada por el cliente al servidor contiene el encabezado de la solicitud, y la respuesta enviada por el servidor al cliente contiene el encabezado de la respuesta. El encabezado del mensaje suele ser un par clave-valor separado por dos puntos.

Hay un módulo de encabezados en nginx, que tiene tres instrucciones, a saber:

  • añadir_encabezado

  • añadir_tráiler

  • caduca

No hace falta decir que expires se usa para controlar el tiempo de caché, el certificado es el tiempo de caché, 0 o un número negativo significa que el caché no es válido

add_trailer tiene el mismo efecto que add_header, agrega campos en los encabezados, pero el avance se agrega al final del encabezado de respuesta

En nginx, estos tres encabezados generalmente controlan la información de respuesta

Además, las instrucciones relacionadas con la modificación de los encabezados suelen estar en el proxy inverso, es decir, cuando el proxy_pass, existen las siguientes instrucciones para operar el encabezado

  • proxy_set_header

  • proxy_ignore_headers

  • proxy_pass_header

  • proxy_hide_header

  • proxy_pass_request_headers

proxy_set_header generalmente se usa más, puede agregar o reescribir el encabezado en el encabezado enviado al servidor ascendente, como el que se usa comúnmente, cuando se utiliza proxy inverso, agregar IP de cliente, XFF y otros campos

proxy_ignore_headers generalmente se usa para deshabilitar ciertos campos de respuesta de los servidores ascendentes, como:

  • X-Accel-Caduca

  • Caduca

  • Control de caché

  • Establecer-Cookie

  • Variar

  • Redirección X-Accel

  • X-Accel-Limit-Rate

  • Buffer X-Accel

  • Juego de caracteres X-Accel

Sin embargo, de acuerdo con la prueba, no funciona en absoluto. Escribí un script php simple, usé proxy_pass como proxy y escribí el campo Expires en el encabezado en php.

Visite para ver los encabezados de respuesta

Luego, use proxy_ignore_headers para ignorar el campo Caduca y solicite ver el efecto nuevamente

No funcionó Al principio pensé que no se podía escribir en php, así que traté de escribirlo en la configuración de nginx ascendente

Prueba de acceso, aún no ignorada

Lo que es efectivo sigue siendo el vencimiento del backend. Según los artículos oficiales y en línea, según tengo entendido, todos ignoran los vencimientos establecidos por el upstream.

Sin embargo, proxy_hide_header puede ignorar los campos del encabezado en la respuesta ascendente.

La solicitud es la siguiente:

proxy_pass_header es exactamente lo contrario de proxy_hide_header. Algunos campos de encabezado nginx no responderán al proxy de manera predeterminada. La documentación oficial de nginx brinda ejemplos de Fecha, Servidor, X-Pad, X-Accel y otros campos. Para probar, también configure el Servidor en php

Establecer servidor proxy_pass_header en nginx

proxy_pass_request_headers es para controlar el encabezado de la solicitud del cliente, ya sea que se pase al servidor ascendente, está habilitado de forma predeterminada, es decir, el encabezado llevado por la solicitud del cliente se reenviará al servidor ascendente, o usar el script php para obtener la información de request_header

Ver resultados de acceso:

Desactive proxy_pass_request_headers en nginx

Obtener resultados de acceso nuevamente

Los anteriores son los ajustes que vienen con nginx, algunas instrucciones para configurar encabezados y los escenarios más comunes para ajustar encabezados:

  • Agregar permitir entre dominios a través de add_header

  • A través del encabezado del encabezado, configure el tiempo efectivo del caché

  • Haz escala de grises agregando un encabezado personalizado

  • Proxy inverso, pase campos personalizados al backend, especialmente xff para obtener la IP real del cliente

Además del módulo de encabezados incorporado, también puede instalar el módulo headers-more de terceros. El control de los encabezados correspondientes es más completo y conveniente. headers-more es un módulo de openresty, que viene con openresty. Para nginx , necesita compilar y agregar un módulo dinámico

Enlace de descarga del módulo Headers-more: GitHub - openresty/headers-more-nginx-module: Establecer, agregar y borrar encabezados de salida arbitrarios en servidores http NGINX

Después de descargar, editar y agregar

Compile el archivo del módulo dinámico a través de módulos make, genere en el directorio objs, copie el archivo .so en el directorio de módulos y cárguelo a través de load_modules en el archivo de configuración de nginx

De esta forma se añade el módulo headers-more

Este módulo tiene principalmente 4 instrucciones:

  • more_set_headers se usa para agregar, modificar y borrar encabezados de respuesta

  • more_clear_headers se usa para borrar los encabezados de respuesta

  • more_set_input_headers se usa para agregar, modificar y borrar encabezados de solicitud

  • more_clear_input_headers se utiliza para borrar los encabezados de solicitud

headers-more es más conveniente y flexible para procesar encabezados que los encabezados que vienen con nginx. Por lo tanto, si hay necesidades que el módulo de encabezados que viene con nginx no puede satisfacer, puede agregar el módulo headers-more

Supongo que te gusta

Origin blog.csdn.net/am_Linux/article/details/130070403
Recomendado
Clasificación