Як встановити favicon.ico для конкретного віртуального хоста на Nginx?


26

Я вперше використовую Nginx як свій веб-сервер. Я не мав жодних проблем, щоб його налаштувати, і все працює чудово. Проблема виникла, коли дизайнер запитав мене, чи може він надіслати мені "іконку в заголовку", щоб "поставити її туди".

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

Мій каталог:

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

Чи можна додати певний favicon.ico до кожного віртуального хоста? Куди слід поставити цей файл і як його налаштувати?

Редагувати:

Я просто зрозумів, що це зовсім інша проблема. Обидві відповіді були правильними, але моя проблема полягала в дозволі. Я не знаю, чому файл favicon.ico отримав дозволи 600 і, звичайно, в той момент, коли я це зробив:

chmod +r favicon.ico

Працював як шарм. Я залишу це тут, якщо це трапиться з кимось іншим.


Дозвіл 600 може стосуватися umask (для цього користувача umask встановлено 077).
jcisio

Випуск дозволів виправив це і для мене!
Kzqai

Випуск дозволу також тут. Ймовірно, через створення файлу ico, завантаживши png на сайт.
Аарон Шторк

Відповіді:


14

favicon.icoфайл повинен бути розміщений у кореневому каталозі веб-сайту, який визначається rootдирективою nginx . Або ви можете передати URL-адресу favicon, використовуючи наступний код у HTML:

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


У мене є файл favicon.ico там ... все ще не працює
ersamy

1
Перевірка grep favicon.ico nginx-{access,error}.logта перевірка вихідних даних від file favicon.icoIE не розуміє нічого, крім формату ICO. Крім того, ви налаштовуєте лише один VirtualHost.
AlexD

1
добре з php crap, непогано зі встановленням статичних файлів
holms

55

Ось як ми це робимо в нашому конкретному vhost config ( sites-available/[vhostconfigfile]) відповідно до директиви сервера:

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

Таким чином, ви можете помістити його куди завгодно, не маючи html.

".X." взагалі не потрібен і позначає лише те, що ви можете змінити це ім'я файлу на все, що завгодно. Я просто використовую ".X". як заповнювач для визначення конкретного піддомену, на який я посилаюсь. Це суто для організації.


Це ідеально підходить для моєї ситуації. У мене простий index.htm з посиланнями на Webmin та phpVirtualBox для мого сервера, і я хотів, щоб усі 3 мали однаковий користувальницький файл.
RyanScottLewis

навіщо вам =там потрібно ?
holms

4
Значення = може не вимагатись , але це може бути невелика швидкість і правильна. Дивіться документи: nginx.org/en/docs/http/ngx_http_core_module.html#location
Скотт Стаффорд

По-перше, чи є потреба .Xв /var/www/media/images/favicon.X.ico? По-друге, я спробував це рішення саме так, як розміщено, і досі не працює. Можливо, це не працює auto_index on;? Можливо, для цього потрібна рекомендація @AlexD.
JamesThomasMoon1979

Ви маєте рацію, ".X" не потрібно. У нас просто багато фаворитів, які розташовані в одній папці для різних веб-сайтів, на яких ми працюємо, тому ми їх однозначно називаємо. Це має бути точне ім'я файлу, який ви хочете виконувати як "favicon.ico". Наведена вище директива дозволяє довільно називати фактичний файл, дозволяючи веб-серверу подавати правильне ім'я файлу 'favicon.ico' браузеру клієнта.
eficker

0

Це означає, що де б не були взяті файли віртуального хоста (коренева директорія), ви повинні помістити конкретний файл favicon.ico.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.