WEB服務與NGINX(16)-網站logo之favicon.ico文件




1. 網站logo之favicon.ico文件

1.1 favicon.ico文件的作用

favicon.ico文件是瀏覽器記錄的網站的圖標,當客戶端使用瀏覽器訪問頁面時,瀏覽器會自己主動發起請求獲取頁面的favicon.ico文件(瀏覽器緩存過此頁面的不會再次請求),例如百度的favicon.ico文件圖標如下:

image

下面我們來制作一個自己的網站圖標,借用一下百度的圖標。

#1.下載baidu的網站圖標
[root@nginx01 ~]# wget https://www.baidu.com/favicon.ico

#2.修改nginx的配置文件
[root@nginx01 ~]# vim /etc/nginx/conf.d/virtualhost.conf 
server {
        listen 80;
        server_name www.nginx01.com;
        charset utf-8,gbk;
        
        access_log /var/log/nginx/access_nginx01.log access_json;
        
        location / {
                root /data/nginx/html/web1;
                index index.html;
        }       
        location = /favicon.ico {
                root /data/nginx/html/web1/image;
        }       
}       

#3.將favicon.ico文件
[root@nginx01 ~]# ll /data/nginx/html/web1/image/favicon.ico 
-rw-r--r-- 1 root root 16958 Mar 10 10:33 /data/nginx/html/web1/image/favicon.ico

瀏覽器測試訪問,發現已經存在圖標了。

image

1.2 favicon.ico文件帶來的問題

當服務器上對用的站點不存在favicon.ico文件時,當客戶端進行訪問時會在服務器上生成一條favicon.ico 404的報錯日志,而且在瀏覽器上也會有響應的報錯。

客戶端的報錯如下:

image

服務器上產生的錯誤日志如下:

[root@nginx01 ~]# tail /var/log/nginx/access_nginx02.log 
{ "@timestamp": "2021-06-19T23:00:23+08:00", "remote_addr": "192.168.20.1", "referer": "-", "request": "GET / HTTP/1.1", "status": 200, "bytes":16, "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", "x_forwarded": "-", "upstr_addr": "-","upstr_host": "-","upstreamtime": "-" }
{ "@timestamp": "2021-06-19T23:00:24+08:00", "remote_addr": "192.168.20.1", "referer": "http://www.nginx02.com/", "request": "GET /favicon.ico HTTP/1.1", "status": 404, "bytes":146, "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", "x_forwarded": "-", "upstr_addr": "-","upstr_host": "-","upstreamtime": "-" }

為了避免上述404報錯的產生,解決方法有兩種:

#方法一:服務器不記錄相關的訪問日志
location = /favicon.ico {
      access_log off;
}    

#方法二:制作圖標,並將圖標放置在響應的位置,如上例。
location = /favicon.ico {
      root /data/nginx/html/web1/image;
} 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM