http - proxy_pass - Nginx proxy_cache_key $ request_body se acepta para el cuerpo de solicitud grande
nginx module cache (1)
Uso nginx como un proxy inverso y me gustaría almacenar en caché las solicitudes POST. Mi back-end está configurado correctamente para devolver los encabezados de control de caché apropiados para las solicitudes POST. En nginx he configurado:
proxy_cache_methods POST;
proxy_cache_key "$request_method$request_uri$request_body";
Esto funciona muy bien para pequeñas solicitudes HTTP POST. Sin embargo, comencé a notar que para solicitudes grandes (por ejemplo, cargas de archivos) parece que el $request_body
se ignora en la proxy_cache_key
. Cuando un formulario que contiene una carga de archivo se envía dos veces con datos completamente diferentes, nginx devolverá el resultado en caché.
Que podria causar esto? ¿Cómo puedo configurar nginx para usar el $request_body
(o un hash de $request_body
) en la proxy_cache_key
incluso para grandes solicitudes POST?
Entonces, cuando $content_length > client_body_buffer_size
, el cuerpo de la solicitud se escribe en un archivo y la variable $request_body == ""
.
Ver también http://mailman.nginx.org/pipermail/nginx/2013-September/040442.html