При чистых ссылках не загружаются картинки

Главные вкладки

Аватар пользователя acoder acoder 13 июня 2011 в 15:44

У меня Drupal 7.2, установлен на VDS, где настроен nginx.
Столкнулся со странной проблемой.

Опция чистых ссылок в панели управления сайтом доступна. Я ее включаю, сайт работает с красивыми ссылками без проблем. Любые ссылки и картинки отображаются.

Единственная проблема заключается в том, что я с включенной опцией чистых ссылок не могу загрузить картинки на сайт. Это касается поля изображения для ноды, а также загрузки аватара в профиль пользователя. Выбираю файл, жму сохранить или загрузить, в ответ никаких ошибок. Для Drupal загрузка картинок как бы завершается успехом, поскольку появляется ссылка и размер. Но самих картинок по сформированным ссылкам нет!

Наблюдения:

- Если отключить "чистые ссылки", то картинки без проблем загружаются. Т.е. с правами на каталоги все в порядке.

- Если загрузить картинки с отключенной опцией "чистые ссылки", а потом ключить ее, то картинки проболжают без проблем показываться на сайте, т.е. не работает именно загрузка.

Пожалуйста помогие. Уже не знаю куда смотреть. Любые советы приветствуются.

На всякий случай конфиг nginx:

server {

        listen 80;
        server_name www.site.ru;
        rewrite ^ http://site.ru$request_uri? permanent; #301 redirect

}

server {

    listen 80;
        server_name site.ru;
       
        root /home/sites/site.ru/www;
        index index.html index.php;

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;

                fastcgi_param DOCUMENT_ROOT     /home/sites/site.ru/www;
                fastcgi_param SCRIPT_FILENAME   /home/sites/site.ru/www$fastcgi_script_name;
                fastcgi_param PATH_TRANSLATED   /home/sites/site.ru/www$fastcgi_script_name;

                include fastcgi_params;
                fastcgi_param QUERY_STRING              $query_string;
                fastcgi_param REQUEST_METHOD    $request_method;
                fastcgi_param CONTENT_TYPE              $content_type;
                fastcgi_param CONTENT_LENGTH    $content_length;
                fastcgi_intercept_errors                on;
                fastcgi_ignore_client_abort             off;
                fastcgi_connect_timeout                 60;
                fastcgi_send_timeout                    180;
                fastcgi_read_timeout                    180;
                fastcgi_buffer_size                             128k;
                fastcgi_buffers                                 4 256k;
                fastcgi_busy_buffers_size               256k;
                fastcgi_temp_file_write_size    256k;
        }
       
        location / {           
                try_files $uri $uri/ index.html /index.php?q=$uri&$args;
        }

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }
       
        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }
       
        ## Disable viewing .htaccess & .htpassword
        location ~ /\.ht {
                deny  all;
        }

    access_log /home/sites/site.ru/logs/site.ru_access.log;
    error_log /home/sites/site.ru/logs/site.ru_error.log;
       
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ {
                access_log off;
                expires max;
        }
}

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 13 июня 2011 в 19:15
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ {
                access_log off;
                error_page 404 = [user=fallback]fallback[/user];
                expires max;
        }

        location [user=fallback]fallback[/user] {
                proxy_pass 127.0.0.1:9000;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }

Аватар пользователя acoder acoder 13 июня 2011 в 20:56

Спасибо за ответ, но пожалуйста прокомментируйте. Это решение или просто что-то типа правильной обработки ошибок? Попытался использовать код, но у меня при перезапуске nginx ругается на строку: proxy_pass 127.0.0.1:9000.

Restarting nginx: nginx: [emerg] invalid URL prefix in /etc/nginx/sites-enabled/site.ru:71

Аватар пользователя acoder acoder 14 июня 2011 в 9:41

Не помогло. Ошибку с proxy_pass 127.0.0.1:9000 исправил указав http, т.е. код следующий:

location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ {
                access_log off;
                error_page 404 = [user=fallback]fallback[/user];
                expires max;
        }
 
        location [user=fallback]fallback[/user] {
                proxy_pass http://127.0.0.1:9000;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }

В таком виде nginx перезапустился без ошибок. Но эффект нулевой. Так же, при отключенных чистых ссылках картинки грузятся, а при включенных - нет.

"xxandeadxx" wrote:
чего тут комментировать то) при попытке получить не существующую картинку, запрос будет передан на бакэнд

Если я правильно понимаю, то у меня проблема не в получении картинки, а в ее создании.

Аватар пользователя acoder acoder 18 июня 2011 в 20:15

Вот здесь хорошо написано о проблеме http://www.drupal.ru/node/57750 и дается решение, которое работает. Но не уверен, что это оптимально.

"xxandeadxx" wrote:
чего тут комментировать то) при попытке получить не существующую картинку, запрос будет передан на бакэнд

Такое решение в теории более правильное, но почему же оно у меня не работает? Вы взяли строчки настроек с работающего сервера?

Аватар пользователя DenisVS DenisVS 2 ноября 2011 в 17:37

Поставил nginx фронтэндом. Столкнулся с проблемой: при загрузке картинки не получаются другие стили. Т.е. оригинальное изображение есть, но нету, к примеру, превью.
Рублю статику стандартным  location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|flv|rtf|js|swf|iso)$
Как и следовало ожидать, если убрать из регулярки jpg, стили появляются. Т.е. Апач, несмотря на проксирование, работает корректно. Но если графику грузит nginx, получается такая ерунда. И главное, понять не могу, где не хватает. Может права, или пути не так, но в логах ничего нет. nginx пишет, что не найден файл, его и впрямь нет при проверке вручную.