Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

209
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda