Esse comportamento é visível com um navegador da Web ou apenas curl? Porque eu não acho que o curl irá esvaziar por padrão, portanto você está obtendo dados binários. Tente o seguinte:
curl -I -H 'Accept-Encoding: gzip,deflate' www.site.com/cs
Eu tenho um servidor nginx rodando como proxy. Uma página é configurada para ser armazenada em cache e ser exibida como compactada.
Mas, de vez em quando, ele serve a página como arquivo .gz , que mostra um arquivo para ser baixado. Um curl –I hit retorna dados binários.
curl -I www.site.com/cs
Mas quando apaguei a pasta cache tudo começa a funcionar bem.
sudo rm -r /tmp/nginx/cscache/
O que poderia estar errado ? Alguém pode ajudar?
Esta é a configuração
location = /cs {
proxy_pass http://localhost:82;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_ignore_headers Set-Cookie;
proxy_ignore_headers Cache-Control;
proxy_ignore_headers Expires;
proxy_ignore_headers X-Accel-Expires;
add_header X-Cache-Status $upstream_cache_status;
proxy_cache cscache;
proxy_cache_bypass $http_cs;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 1d;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout invalid_header;
}
E o resultado durante uma chamada curl -I válida.
[c@c ~]$ curl -I www.site.com/cs
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 28 Dec 2011 14:49:39 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Keep-Alive: timeout=60
Vary: Accept-Encoding
Vary: Cookie,Accept-Encoding
X-Mod-Pagespeed: 0.9.17.7-716
Cache-Control: max-age=0, no-cache, no-store
X-Cache-Status: MISS
Esse comportamento é visível com um navegador da Web ou apenas curl? Porque eu não acho que o curl irá esvaziar por padrão, portanto você está obtendo dados binários. Tente o seguinte:
curl -I -H 'Accept-Encoding: gzip,deflate' www.site.com/cs
Eu acredito que os ativos em cache estão sendo corrompidos, e é por isso que os pedidos que ignoram o cache (X-Cache-Status: MISS) estão bem. Respostas de solicitações que ignoram o cache ainda podem ser armazenadas em cache. Eu não sei quais condições você está usando para ignorar o cache, mas quando eu encontrei esse problema, tinha algo a ver com respostas para usuários autenticados sendo armazenados em cache e, em seguida, esse cache sendo servido para usuários não autenticados.
Se você adicionar uma diretiva proxy_no_cache $http_cs
, suspeito que isso irá resolvê-la ... mas é claro que não armazenar em cache solicitações ignoradas pode ser um comportamento indesejado.