Wie stelle ich eine favicon.ico für einen bestimmten virtuellen Host auf Nginx ein?

26

Ich benutze Nginx zum ersten Mal als Webserver. Ich hatte keine Mühe, es einzurichten und alles funktioniert großartig. Das Problem trat auf, als der Designer mich fragte, ob er mir "das Symbol in der Titelleiste" senden könne, um es dort abzulegen.

# /opt/nginx/conf/nginx.conf
...
server {
    listen 80 ;
    server_name *.website.com website.com;
    root /home/webuser/sites/website;
}

Mein Verzeichnis:

/home/webuser/sites/website/
|_ index.html
|_ main.css
|_ favicon.ico

Ist es möglich, jedem virtuellen Host eine bestimmte favicon.ico zuzuweisen? Wo sollten Sie diese Datei ablegen und wie können Sie sie konfigurieren?

BEARBEITEN:

Mir ist gerade klar geworden, dass es ein ganz anderes Problem ist. Beide Antworten waren richtig, aber mein Problem war die Erlaubnis. Ich weiß nicht, warum die Datei favicon.ico die Berechtigungen 600 hatte und natürlich in dem Moment, als ich es tat:

chmod +r favicon.ico

Lief wie am Schnürchen. Ich werde dies hier lassen, wenn es jemand anderem passiert.

ersamy
quelle
Die 600-Berechtigung kann sich auf die umask beziehen (umask für diesen Benutzer ist beispielsweise auf 077 festgelegt).
JCISIO
Das Problem mit den Berechtigungen hat es auch für mich behoben!
Kzqai
Erlaubnisfrage auch hier. Wahrscheinlich aufgrund der Erstellung der ICO-Datei durch Hochladen eines PNG auf eine Website.
Aaron Storck

Antworten:

14

favicon.icoDie Datei sollte im Stammverzeichnis der Website abgelegt werden, das durch die nginx- rootDirektive definiert ist . Oder Sie können URL an Favicon übergeben, indem Sie folgenden Code in HTML verwenden:

<link rel="shortcut icon" href="http://example.com/myicon.ico" />

AlexD
quelle
Ich habe meine favicon.ico-Datei dort ... funktioniert immer noch nicht
ersamy
1
Überprüfen grep favicon.ico nginx-{access,error}.logund überprüfen Sie die Ausgabe von file favicon.ico- IE versteht nur das ICO-Format. Außerdem zeigt Ihre Konfiguration nur einen VirtualHost an.
AlexD
1
gut mit PHP Mist, nicht gut mit statischen Dateien Setup
Holms
55

So machen wir das in unserer spezifischen vhost config ( sites-available/[vhostconfigfile]) unter der server Direktive:

location = /favicon.ico {
    alias /var/www/media/images/favicon.X.ico;
}

Auf diese Weise können Sie es beliebig platzieren, ganz ohne HTML.

Das ".X." ist überhaupt nicht erforderlich und zeigt nur an, dass Sie diesen Dateinamen beliebig ändern können. Ich benutze einfach die ".X." als Platzhalter zum Identifizieren der spezifischen Unterdomäne, auf die ich verweise. Es ist rein für die Organisation.

eficker
quelle
Das ist perfekt für meine Situation. Ich habe eine einfache index.htm mit Links zu Webmin und phpVirtualBox für meinen Server und ich wollte, dass alle 3 das gleiche benutzerdefinierte Favicon haben.
RyanScottLewis
warum brauchst du da drin =?
Holms
4
Das = ist möglicherweise nicht erforderlich , kann aber eine bescheidene Beschleunigung sein und ist korrekt. Siehe die Dokumente: nginx.org/en/docs/http/ngx_http_core_module.html#location
Scott Stafford
Erstens, gibt es einen Bedarf für die .Xin /var/www/media/images/favicon.X.ico? Zweitens habe ich diese Lösung genau so ausprobiert, wie sie veröffentlicht wurde, aber immer noch nicht funktioniert. Vielleicht funktioniert das nicht mit auto_index on;? Möglicherweise ist eine @AlexD-Empfehlung erforderlich.
JamesThomasMoon1979
Sie haben Recht, das '.X' ist nicht erforderlich. Wir haben nur viele Favoriten im selben Ordner für die verschiedenen Sites, die wir ausführen. So benennen wir sie eindeutig. Es sollte der genaue Dateiname für die Datei sein, die Sie als 'favicon.ico' verwenden möchten. Die oben aufgeführte Direktive ermöglicht die willkürliche Benennung der eigentlichen Datei, während der Webserver dem Browser des Clients den korrekten Dateinamen 'favicon.ico' zur Verfügung stellt.
Eficker
0

Dies bedeutet, dass Sie, wo immer die Dateien des virtuellen Hosts (Stammverzeichnis) abgelegt werden, diese bestimmte Datei favicon.ico ablegen sollten.

U4iK_HaZe
quelle