Rails 3.1 Favicon.ICO nicht serviert wird
-
26-10-2019 - |
Frage
Obwohl es in der ist /public
Verzeichnis, wenn ich besuche http://site.example.com/favicon.ico
Ich bekomme die 404 -Seite. Interessanterweise, wenn ich versuche zu besuchen http://site.example.com/500.html
Ich bekomme auch die 404 -Seite, die mich dazu bringt, das zu glauben /public
Dateien werden überhaupt nicht serviert. Ich leite Nginx mit Einhorn. Gibt es Einstellungen in Schienen, die die Portion von deaktivieren würden /public
Vermögenswerte?
BearbeitenMeine Nginx -Konfiguration:
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;
# }
}
Ich habe root :to => 'reports#index'
In meinen Strecken, aber ich sehe nicht, wie das einen Unterschied machen könnte.
LösungIch bewegte die Linie root /srv/ctr/current/public;
oben keepalive_timeout 5;
Lösung
Überprüfen Sie Ihre Routen.RB, um sicherzustellen, dass Sie keine Zeile haben wie z.
root :to => "home#index"
Überprüfen Sie auch nginx.conf, um sicherzustellen, dass Sie es haben
root /path/to/app/public;
Für Ihren Server / Vhost.
Dave
Andere Tipps
Rails, favicon.ico nicht gefunden
Konfigurieren Sie Ihren 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;
}
}