Этот URL недействителен: http://mysite.co.uk/assets/images/whymysite/viewoptions.png
Однако, если я заменю 's' в конце перед .png ЛЮБОЙ другим стандартным символом (который я пробовал до сих пор, он работает нормально. ТАКЖЕ, я ранее использовал viewoptions.jpg - и ЭТО отлично работает. Вроде бы конкретно s.png это вызывает его, по крайней мере, так кажется.
У меня были другие сбивающие с толку 404-е, пытающиеся загрузить изображения, которые, как я подозреваю, вероятно, были симптомами той же проблемы, с которой я работал, просто случайным образом переименовывая изображения из-за отчаяния в последнюю минуту!
Все остальное работает как положено, но это сводит меня с ума! Я новичок в nginx и больше программист, чем сисадмин, так что смейтесь над моей очевидной ошибкой, какой бы она ни была :)
Моя конфигурация nginx для этого сайта:
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;
}
}
Вот несколько записей в журнале. Во-первых, запись в журнале ошибок для 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"
Теперь записи access.log для других имен файлов, которые действительно работают. Другое расширение, удаление 's', добавление одного или нескольких символов вместо 's'? Все в порядке!
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"
Просто удалите эту часть:
location ~* .(jpg|jpeg|gif|css|png|js|ico|eot|svg|ttf|woff)$ {
access_log off;
expires 30d;
}
Потому что теперь вы боретесь только с кешем вашего браузера.