Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

223
Vistas
¿Cómo maneja Nginx los encabezados `If-None-Match` y `If-Modified-Since` cuando se configura como un caché de proxy inverso?

Tengo un PHP CMS como servidor ascendente/de origen que sirve contenido. Se coloca detrás de un servidor web Nginx configurado como un caché de proxy inverso con proxy_pass y proxy_cache .

Mientras implementaba la respuesta 304 Not Modified en el servidor ascendente/de origen, noté que a veces recibo una respuesta 304 Not Modified del proxy sin que se llame a mi servidor ascendente/de origen.

Mi configuración de proxy se ve así (tenga en cuenta que no guardo en caché las respuestas 304):

 http { #... proxy_cache_path /usr/share/nginx/cache/ levels=1:2 keys_zone=microcache:10m max_size=1024m inactive=1h; } server { server_name _; #... location / { proxy_cache microcache; proxy_cache_revalidate on; add_header X-Cache-Status $upstream_cache_status; #... proxy_cache_valid 200 301 302 1m; proxy_pass http://upstream; } }

Cuando presiono una URL por primera vez, obtengo un 200 con X-Cache-Status: MISS y los ETag y Last-Modified devueltos por el origen.

La segunda vez que presiono la URL, obtengo un X-Cache-Status: HIT y no se llama a mi origen, ¡así que todo es genial!

Sin embargo, si vuelvo a presionar la URL, esta vez con los encabezados If-Modified-Since y If-None-Match con los valores recibidos con la primera llamada, obtengo un 304 Not Modified , con X-Cache-Status: HIT y ¡Aún no hay llamadas en mi servidor de origen!

Entonces, parece que Nginx tiene el contenido en su caché y, con los encabezados entrantes, debería devolver un 304. Lo que significa que mi origen nunca puede devolver el 304 si el contenido está en el caché de Nginx.

¿Tengo razón? No puedo encontrar ninguna documentación sobre este comportamiento. Sin embargo, encontré un módulo en el código fuente de Nginx que parece estar manejando algo similar: https://github.com/nginx/nginx/blob/master/src/http/modules/ngx_http_not_modified_filter_module.c#L78

¿Podría brindarme información sobre este comportamiento, cómo funciona y qué lo habilita en mi configuración?

¡Muchos gracias!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

proxy_cache_path /usr/share/nginx/cache/ levels=1:2 keys_zone=microcache:10m max_size=1024m inactive=1h; proxy_cache microcache;

Lo que significa que el servidor nginx almacena datos de caché en /usr/share/nginx/cache/

y

 proxy_cache_valid 200 301 302 1m;

Esto significa que cualquier llamada a la API HTTP que tenga los estados HTTP 200, 301 o 302 usa el caché local de nginx (que se almacena en /usr/shre/nginx/cache ) durante un minuto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda