Назад | Перейти на главную страницу

Странная ошибка 404 с nginx 's.png'

Этот 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;
}

Потому что теперь вы боретесь только с кешем вашего браузера.