Come impostare un favicon.ico per un host virtuale specifico su Nginx?


26

Sto usando Nginx come mio server web per la prima volta. Non ho avuto alcun problema a configurarlo e tutto funziona alla grande. Il problema si è presentato quando il designer mi ha chiesto se poteva inviarmi "l'icona nella barra del titolo" per "inserirla".

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

La mia directory:

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

È possibile inserire un favicon.ico specifico per ciascun host virtuale? Dove dovresti mettere quel file e come puoi configurarlo?

MODIFICARE:

Ho appena capito che si trattava di un problema completamente diverso. Entrambe le risposte erano giuste ma il mio problema era l'autorizzazione. Non so perché il file favicon.ico abbia finito con le autorizzazioni 600 e ovviamente nel momento in cui l'ho fatto:

chmod +r favicon.ico

Ha funzionato come un fascino. Lascio questo qui se succede a qualcun altro.


L'autorizzazione 600 potrebbe riferirsi a umask (umask per quell'utente è impostato su 077 per esempio).
jcisio,

Il problema delle autorizzazioni lo ha risolto anche per me!
Kzqai,

Anche qui il problema delle autorizzazioni. Probabilmente a causa della creazione del file ico caricando un png su un sito.
Aaron Storck,

Risposte:


14

favicon.icoil file deve essere inserito nella directory principale del sito Web definita dalla rootdirettiva nginx . Oppure potresti passare l'URL a favicon usando il seguente codice in HTML:

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


Ho il mio file favicon.ico lì dentro ... ancora non funziona
ersamy

1
Controlla grep favicon.ico nginx-{access,error}.loge controlla l'output da file favicon.ico- IE non comprende altro che il formato ICO. Inoltre, la configurazione mostra solo un VirtualHost.
AlexD

1
buono con php schifo, non buono con l'installazione di file statici
holms

55

Ecco come lo facciamo nel nostro specifico vhost config ( sites-available/[vhostconfigfile]) sotto la direttiva server:

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

In questo modo puoi metterlo dove vuoi senza nessun html.

Il ".X". non è affatto richiesto e indica solo che è possibile modificare questo nome file in qualsiasi cosa ti piaccia. Uso semplicemente il ".X". come segnaposto per identificare il sottodominio specifico a cui mi riferisco. È puramente per l'organizzazione.


Questo è perfetto per la mia situazione. Ho un semplice index.htm con collegamenti a Webmin e phpVirtualBox per il mio server e volevo che tutti e 3 avessero la stessa favicon personalizzata.
RyanScottLewis,

perché ti serve =lì?
holms,

4
Il = potrebbe non essere richiesto , ma potrebbe essere un modesto speedup ed è corretto. Vedi i documenti: nginx.org/it/docs/http/ngx_http_core_module.html#location
Scott Stafford

Innanzitutto, c'è bisogno di .Xin /var/www/media/images/favicon.X.ico? In secondo luogo, ho provato questa soluzione esattamente come pubblicata, ancora non funzionante. Forse questo non funziona con auto_index on;? Forse richiede la raccomandazione @AlexD.
JamesThomasMoon1979

Hai ragione, il '.X' non è richiesto. Abbiamo solo molti favicon situati tutti nella stessa cartella per i diversi siti che gestiamo, quindi è così che li chiamiamo in modo univoco. Dovrebbe essere il nome esatto del file che desideri servire come "favicon.ico". La direttiva che ho elencato sopra consente la denominazione arbitraria del file effettivo consentendo al server web di fornire il nome file corretto 'favicon.ico' al browser del client.
eficker

0

Ciò significa che, ovunque i file dell'host virtuale siano presi da (directory root) dovresti inserire quel file favicon.ico specifico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.