Basta remover esta parte:
location ~* .(jpg|jpeg|gif|css|png|js|ico|eot|svg|ttf|woff)$ {
access_log off;
expires 30d;
}
Porque agora você está lutando apenas contra o cache do seu navegador.
Este URL é inválido: link
No entanto, se eu substituir o 's' no final antes de .png, com QUALQUER outro caracter padrão (que eu tentei até agora, ele funciona bem. TAMBÉM, eu estava usando anteriormente viewoptions.jpg - e THAT funciona bem. Parece ser especificamente s.png que está disparando, ou assim parece.
Eu tive alguns outros 404s desconcertantes tentando carregar imagens, que eu suspeito que fossem, provavelmente, sintomas do mesmo problema, que eu trabalhei por aí apenas renomeando aleatoriamente as imagens, por desespero de última hora!
Tudo está funcionando como esperado, mas isso está me deixando louco! Eu sou novo no nginx e mais codificador do que o sysadmin então sinta-se livre para rir do meu erro óbvio, seja ele qual for:)
Minha configuração nginx para este site é:
server {
listen 80;
server_name mysite.co.uk;
root /var/www/mysite/public/;
index index.php index.html;
access_log /var/www/mysite/logs/access.log;
error_log /var/www/dmysite/logs/error.log;
try_files $uri $uri/ /index.php?q=$uri&$args;
location ~* .(jpg|jpeg|gif|css|png|js|ico|eot|svg|ttf|woff)$ {
access_log off;
expires 30d;
}
# pass PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
}
}
Aqui estão algumas entradas de log. Primeiro, a entrada do log de erros para 'viewoptions.png'
2011/09/28 17:24:34 [error] 4241#0: *11 open() "/var/www/mysite/public/assets/images/whymysite/viewoptions.png" failed (2: No such file or directory), client: 192.168.0.2, server: mysite.co.uk, request: "GET /assets/images/whymysite/viewoptions.png HTTP/1.1", host: "mysite.co.uk", referrer: "http://mysite.co.uk/why-mysite.php"
Agora, as entradas access.log para os outros nomes de arquivos que funcionam. Uma extensão diferente, removendo o 's', adicionando um ou mais caracteres em substituição do 's'? Tudo bem!
192.168.0.2 - - [28/Sep/2011:17:24:14 +0100] "GET /assets/images/whymysite/viewoptions.jpg HTTP/1.1" 304 0 "http://mysite.co.uk/why-mysite.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1"
192.168.0.2 - - [28/Sep/2011:17:24:34 +0100] "GET /assets/images/whymysite/viewoptions.png HTTP/1.1" 404 201 "http://mysite.co.uk/why-mysite.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1"
192.168.0.2 - - [28/Sep/2011:17:24:43 +0100] "GET /assets/images/whymysite/viewoption.png HTTP/1.1" 304 0 "http://mysite.co.uk/why-mysite.php"
192.168.0.2 - - [28/Sep/2011:17:24:59 +0100] "GET /assets/images/whymysite/viewoptionqqq.png HTTP/1.1" 200 3486 "http://mysite.co.uk/why-mysite.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1"
Basta remover esta parte:
location ~* .(jpg|jpeg|gif|css|png|js|ico|eot|svg|ttf|woff)$ {
access_log off;
expires 30d;
}
Porque agora você está lutando apenas contra o cache do seu navegador.