如何在Nginx上为特定的虚拟主机设置favicon.ico?


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 2011年

权限问题也为我修复了!
Kzqai 2014年

权限问题也在这里。可能是由于通过将png上载到站点而创建了ico文件。
亚伦·斯托克

Answers:


14

favicon.ico文件应放置在由nginx root指令定义的网站根目录中。或者,您可以通过使用HTML中的以下代码将URL传递给favicon:

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


我的favicon.ico文件在那里...仍然无法正常工作
ersamy 2011年

1
检查grep favicon.ico nginx-{access,error}.log并检查输出file favicon.ico-IE除了ICO格式外不了解其他任何内容。另外,您的配置仅显示一个VirtualHost。
AlexD 2011年

1
php废话很好,静态文件设置不好
holms 2013年

55

这是我们sites-available/[vhostconfigfile]在服务器指令下的特定vhost config()中执行的操作:

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

这样,您可以将其放置在任何位置而无需任何html。

“ .X”。完全不需要,仅表示您可以将此文件名更改为所需的任何名称。我只是使用“ .X”。作为占位符以标识我要引用的特定子域。纯粹是为了组织。


这对于我的情况而言是完美的。我有一个简单的index.htm,其中包含指向我的服务器的Webmin和phpVirtualBox的链接,我希望所有3个都具有相同的自定义图标。
RyanScottLewis 2012年

为什么=在那里需要?
霍尔姆斯2013年

4
=可能不是必需的,但可能是适度的加速并且是正确的。参见文档:nginx.org/en/docs/http/ngx_http_core_module.html#location
Scott Stafford

首先,需要.Xin /var/www/media/images/favicon.X.ico吗?其次,我完全按照发布的方式尝试过此解决方案,但仍无法正常工作。也许这不起作用auto_index on;?也许它需要@AlexD建议。
JamesThomasMoon1979

没错,不需要'.X'。对于运行的不同站点,我们只是有许多图标都位于同一文件夹中,因此这就是我们唯一命名它们的方式。它应该是您要用作“ favicon.ico”的文件的确切文件名。我上面列出的指令允许对实际文件进行任意命名,同时允许Web服务器向客户端的浏览器提供正确的文件名'favicon.ico'。
eficker

0

这意味着,无论从(根目录)获取虚拟主机文件的位置,都应放置该特定的favicon.ico文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.