¿Cómo puedo eliminar un encabezado de solicitud de codificación de aceptación en nginx?

¿Cómo puedo eliminar un encabezado de solicitud de codificación de aceptación en nginx?

La reciente actualización de zlib debido aun agujero de seguridadparece causar un problema importante al servir PHP-FPM 8.0 a través de nginx en Ubuntu focal. Cualquier solicitud con codificación gzip falla justo al comienzo de la respuesta, aunque nginx registra las solicitudes como exitosas y con el tamaño correcto. Si hago solicitudes sin Accept-Encodingencabezado, funciona perfectamente. Como solución alternativa, estoy intentando desactivar toda la compatibilidad con gzip, pero parece ser notablemente persistente... Hasta ahora he probado estas configuraciones en nginx:

gzip off;
fastcgi_buffering off;
add_header Accept-Encoding "";
proxy_set_header Accept-Encoding "";

y también verifiqué que no haya otras directivas que las vuelvan a activar mediante grepping nginx -Tde salida.

Sin embargo, si descarto los encabezados de solicitud de PHP (es decir, después de pasar por nginx), todavía veo este encabezado de aceptación:

Accept-Encoding: deflate, gzip, br, zstd

entonces nginx esnoeliminándolo de la solicitud antes de pasar a PHP-FPM. Intenté configurar estas directivas en los niveles de servidor y ubicación, con los mismos resultados.

En PHP, deshabilité todo el almacenamiento en búfer de salida, pero no parece posible deshabilitar zlib sin volver a compilar.

¿Cómo puedo hacer que nginx elimine este encabezado de solicitud para que ni nginx ni PHP compriman las respuestas?

Respuesta1

proxy_set_headerdirectiva es paraproxysolicitudes, es decir, pasarlas porHTTP a HTTP-cadena de servidores. Y tienes elCGI rápidoservidor siguiente en la cadena, por lo que su conjunto de directivas comienza desde fastcgi_.

Puede deshabilitar completamente el paso de encabezados de solicitud a PHP desactivándolos fastcgi_pass_request_headers, o puede eliminar el encabezado específico restableciéndolo con fastcgi_set_header.

Respuesta2

Para fastcgi, usas una sintaxis un poco diferente. En lugar de configurar el encabezado, configura un parámetro que corresponde al encabezado. Los nombres de los parámetros comienzan con "HTTP_", luego el nombre del encabezado sigue en mayúsculas. Los guiones se reemplazan por guiones bajos en el nombre del parámetro.

fastcgi_param HTTP_ACCEPT_ENCODING "";

información relacionada