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

Я впервые использую 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

Работал как шарм. Я оставлю это здесь, если это случится с кем-то еще.

3 ответа

Решение

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

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

Вот как мы это делаем в нашем конкретном конфиге vhost (sites-available/[vhostconfigfile]) в соответствии с директивой сервера:

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

Таким образом, вы можете поместить его в любом месте, без каких-либо HTML.

".X." не требуется вообще, и означает только то, что вы можете изменить это имя файла на что угодно. Я просто использую ".X." в качестве заполнителя для определения конкретного субдомена, на который я ссылаюсь. Это чисто для организации.

Это означает, что куда бы вы ни брали файлы виртуального хоста (корневой каталог), вы должны поместить этот конкретный файл favicon.ico.

Другие вопросы по тегам