2012-01-10 4 views
3

Несмотря на то, что я находился в каталоге /public, если я посещаю http://site.example.com/favicon.ico Я получаю страницу 404. Интересно, что если я попытаюсь посетить http://site.example.com/500.html, я также получаю страницу 404, которая заставляет меня думать, что файлы /public вообще не обслуживаются. Я бегу Nginx с Unicorn. Существуют ли какие-либо настройки в Rails, которые могли бы отключить обслуживание /public активов?Rails 3.1 favicon.ico не обслуживается

Редактировать Мой Nginx конфигурации:

server { 
    listen 80; 
    client_max_body_size 4G; 
    server_name _; 

    keepalive_timeout 5; 

    # Location of our static files 
    location ~ ^/(assets)/ { 
    root /srv/ctr/current/public; 
    gzip_static on; # to serve pre-gzipped version 
    expires max; 
    add_header Cache-Control public; 
    } 

    location/{ 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 

    # If you don't find the filename in the static files 
    # Then request it from the unicorn server 
    if (!-f $request_filename) { 
     proxy_pass http://app_server; 
     break; 
    } 
    } 

    # error_page 500 502 503 504 /500.html; 
    # location = /500.html { 
    # root /var/rails/testapp/public; 
    # } 
} 

У меня есть root :to => 'reports#index' в моих маршрутах, но я не вижу, как это может сделать разницу.

Решение я переместил линию root /srv/ctr/current/public; выше keepalive_timeout 5;

+0

Я не могу подтвердить, что Rails 3.1, Nginx и Единорог игнорировать мой Favicon, 404.html или 500. html (из моего общедоступного каталога). Вот моя конфигурация, чтобы проверить, есть ли какие-либо отличия: https://gist.github.com/1589113 Удачи :) –

ответ

1

Проверьте routes.rb, чтобы убедиться, что вы не имеете строку типа

root :to => "home#index" 

Также проверьте nginx.conf, чтобы убедиться, у вас есть

root /path/to/app/public; 

для вашего сервера/vhost.

Dave

+2

Дэйв, вы уверены, что 'root: to =>" home # index "может быть источником для этой ошибки? У меня есть это объявление, и он может получить мой значок и т. Д. Но директива 'root/path/to/app/public;' - мое предложение. –

+1

timbrandes, только что проверил и да, даже с маршрутом в favicon и т. Д. Должен работать. Это было какое-то время, так как наши проекты являются мульти-лицензионными, многопрофильными компаниями, поэтому у меня есть директива, которая ссылается на значок в зависимости от используемого имени хоста (не спрашивайте !!) – detheridge02

+1

@ detheridge02, возможно, вы захотите отредактировать эту первую часть своей ответ, поскольку, будучи принятым, он может ввести в заблуждение пользователей, которые не читают комментарии! – asymmetric

0

Rails, favicon.ico not found

Настройка Nginx .conf

vim /etc/nginx/conf.d/your_project.conf

server { 
    ...... 

    # static resource routing - both assets folder and favicon.ico 
    location ~* ^/assets/|favicon.ico { 
     # Per RFC2616 - 1 year maximum expiry 
      # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 
      expires 1y; 
      add_header Cache-Control public; 

      # Some browsers still send conditional-GET requests if there's a 
      # Last-Modified header or an ETag header even if they haven't 
      # reached the expiry date sent in the Expires header. 
      add_header Last-Modified ""; 
      add_header ETag ""; 
      break; 
     } 
}