Comment définir un favicon.ico pour un hôte virtuel spécifique sur Nginx?

26

J'utilise Nginx comme serveur Web pour la première fois. Je n'ai eu aucun mal à le configurer et tout fonctionne très bien. Le problème est venu quand le designer m'a demandé s'il pouvait m'envoyer "l'icône dans la barre de titre" pour "la mettre là-haut".

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

Mon annuaire:

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

Est-il possible de mettre un favicon.ico spécifique sur chaque hôte virtuel? Où devez-vous mettre ce fichier et comment pouvez-vous le configurer?

MODIFIER:

Je viens de réaliser que c'était un problème complètement différent. Les deux réponses étaient correctes mais mon problème était la permission. Je ne sais pas pourquoi le fichier favicon.ico a fini par avoir des permissions 600 et bien sûr au moment où je l'ai fait:

chmod +r favicon.ico

A fonctionné comme un charme. Je laisserai cela ici si cela arrive à quelqu'un d'autre.

ersamy
la source
L'autorisation 600 peut se rapporter à l'umask (l'umask pour cet utilisateur est défini sur 077 par exemple).
jcisio
Le problème des autorisations l'a également résolu!
Kzqai
Problème d'autorisation ici également. Probablement en raison de la création du fichier ico en téléchargeant un png sur un site.
Aaron Storck

Réponses:

14

favicon.icole fichier doit être placé dans le répertoire racine du site Web qui est défini par la rootdirective nginx . Ou vous pouvez transmettre l'URL à favicon en utilisant le code suivant en HTML:

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

AlexD
la source
J'ai mon fichier favicon.ico là-dedans ... ne fonctionne toujours pas
ersamy
1
Vérifiez grep favicon.ico nginx-{access,error}.loget vérifiez la sortie de file favicon.ico- IE ne comprend rien d'autre que le format ICO. De plus, votre configuration n'affiche qu'un seul VirtualHost.
AlexD
1
bon avec de la merde php, pas bon avec la configuration de fichiers statiques
holms
55

Voici comment nous le faisons dans notre config vhost spécifique ( sites-available/[vhostconfigfile]) sous la directive serveur:

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

De cette façon, vous pouvez le placer où vous voulez sans aucun html.

Le ".X". n'est pas obligatoire du tout, et indique seulement que vous pouvez changer ce nom de fichier en ce que vous voulez. J'utilise simplement le ".X". en tant qu'espace réservé pour identifier le sous-domaine spécifique auquel je fais référence. C'est purement pour l'organisation.

eficker
la source
C'est parfait pour ma situation. J'ai un index.htm simple avec des liens vers Webmin et phpVirtualBox pour mon serveur et je voulais que tous les 3 aient le même favicon personnalisé.
RyanScottLewis
pourquoi avez-vous besoin =là-dedans?
holms
4
Le = peut ne pas être requis , mais il peut s'agir d'une accélération modeste et il est correct. Voir les documents: nginx.org/en/docs/http/ngx_http_core_module.html#location
Scott Stafford du
Tout d'abord, y a-t-il un besoin pour le .Xin /var/www/media/images/favicon.X.ico? Deuxièmement, j'ai essayé cette solution exactement comme publiée, mais ne fonctionne toujours pas. Peut-être que cela ne fonctionne pas auto_index on;? Peut-être que cela nécessite une recommandation @AlexD.
JamesThomasMoon1979
Vous avez raison, le '.X' n'est pas requis. Nous avons juste beaucoup de favicons tous situés dans le même dossier pour les différents sites que nous gérons, c'est ainsi que nous les nommons de manière unique. Il doit s'agir du nom de fichier exact du fichier que vous souhaitez utiliser comme «favicon.ico». La directive que je liste ci-dessus permet de nommer arbitrairement le fichier réel tout en permettant au serveur Web de servir le nom de fichier correct 'favicon.ico' au navigateur du client.
eficker
0

Cela signifie que, où que les fichiers de l'hôte virtuel proviennent de (répertoire racine), vous devez placer ce fichier favicon.ico spécifique.

U4iK_HaZe
la source