Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

208
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!