背景介绍

因为一些浏览器在访问网站时会默认去请求网站的favicon,但是我的网站(Tengine)上并没有这些icon图片,因此在访问日志里会出现大量的404错误,会触发一些没必要日志告警。
我们可以通过配置nginx empty_gif来给请求返回一个1x1,大小为43字节的空白图片来解决这个问题。这个给请求返回一个空白图片的做法经常用在网站统计等需求里。

empty_gif模块的官方链接地址:http://nginx.org/en/docs/http/ngx_http_empty_gif_module.html

配置

我统计我的日志里访问icon的请求,请求的目标文件总共有三个,所以对这些请求全部做返回空白图片处理。

nginx上添加如下配置:

location ~ ^/(apple-touch-icon.png|apple-touch-icon-precomposed.png|favicon.ico){
empty_gif;
}

测试

Wget

[root@thatsit vhosts]# cd /tmp/
[root@thatsit tmp]# wget http://www.thatsit.cc/favicon.ico
--2017-01-09 11:35:32-- http://www.thatsit.cc/favicon.ico
Resolving www.thatsit.cc... 10.10.10.101
Connecting to www.thatsit.cc|10.10.10.101|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 43 [image/gif]
Saving to: “favicon.ico” 100%[=============================================================================================>] 43 --.-K/s in 0s 2017-01-09 11:35:32 (8.85 MB/s) - “favicon.ico” saved [43/43] [root@thatsit tmp]#
[root@thatsit tmp]# wget http://www.thatsit.cc/apple-touch-icon-precomposed.png
--2017-01-09 11:36:29-- http://www.thatsit.cc/apple-touch-icon-precomposed.png
Resolving www.thatsit.cc... 10.10.10.101
Connecting to www.thatsit.cc|10.10.10.101|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 43 [image/gif]
Saving to: “apple-touch-icon-precomposed.png” 100%[=============================================================================================>] 43 --.-K/s in 0s 2017-01-09 11:36:29 (12.3 MB/s) - “apple-touch-icon-precomposed.png” saved [43/43] [root@thatsit tmp]#
[root@thatsit tmp]# wget http://www.thatsit.cc/apple-touch-icon.png
--2017-01-09 11:36:47-- http://www.thatsit.cc/apple-touch-icon.png
Resolving www.thatsit.cc... 10.10.10.101
Connecting to www.thatsit.cc|10.10.10.101|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 43 [image/gif]
Saving to: “apple-touch-icon.png” 100%[=============================================================================================>] 43 --.-K/s in 0s 2017-01-09 11:36:47 (12.3 MB/s) - “apple-touch-icon.png” saved [43/43] [root@thatsit tmp]# ll
total 24
-rw-r--r-- 1 root root 43 Sep 28 1970 apple-touch-icon.png
-rw-r--r-- 1 root root 43 Sep 28 1970 apple-touch-icon-precomposed.png
-rw-r--r-- 1 root root 43 Sep 28 1970 favicon.ico
[root@thatsit tmp]#

Curl

[root@thatsit tmp]# curl -XGET -I http://www.thatsit.cc/apple-touch-icon.png
HTTP/1.1 200 OK
Server: Tengine
Date: Mon, 09 Jan 2017 03:39:32 GMT
Content-Type: image/gif
Content-Length: 43
Last-Modified: Mon, 28 Sep 1970 06:00:00 GMT
Connection: keep-alive [root@thatsit tmp]#

  

nginx通过配置empty_gif解决请求favicon 404的问题的更多相关文章

  1. nginx 本地配置(解决跨域问题)

    前端做跨域本身就是扯淡的事情.后台人员不配合说什么都是白搭.索性整理了一下心得,(可以直接部署自配置)发不多说上代码: 1 #user nobody; 2 worker_processes 1; 3 ...

  2. nginx session 配置失效解决

    nginx 反向代理后台web服务器session path导致的session 失效,特此总结下配置方法: 配置如下: location ^~ /2016tyjf_dev/djwechat { pr ...

  3. thinkphp nginx 上配置 并解决get获取到数据现象

    server { listen 80; server_name XXXX.funova.net XXX.funova.com; root /opt/newgm; index index.php; lo ...

  4. Windows中Nginx配置nginx.conf不生效解决方法(路径映射)

    Windows中Nginx配置nginx.conf不生效解决方法 今天在做Nginx项目的时候,要处理一个路径映射问题, location /evaluate/ { proxy_pass http:/ ...

  5. Nginx 高级配置--关于favicon.ico

    Nginx 高级配置--关于favicon.ico 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.浏览器会默认帮咱们访问官网的图标 1>.浏览器访问网站"htt ...

  6. 解决Nginx+Tomcat下客户端https请求跳转成http的问题

    Nginx上开启https,  后端使用Tomcat,  两者间走http协议, 但发现如果tomcat应用存在跳转时, 则客户端浏览器会出现400 Bad Request的错误, 通过抓包发现原因是 ...

  7. nginx中配置404错误页面的教程

    什么是404页面如果网站出了问题,或者用户试图访问一个并不存在的页面时,此时服务器会返回代码为404的错误信息,此时对应页面就是404页面.404页面的默认内容和具体的服务器有关.如果后台用的是NGI ...

  8. NGINX: 配置跨域请求

    说明: 内容全部来自 SegmentFault Developer Nginx 配置跨域请求 跨域请求失败, nginx 报错: 403 No 'Access-Control-Allow-Origin ...

  9. nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题

    For reference, I am attaching my location block for catching files with the .php extension: location ...

随机推荐

  1. 【JUC源码解析】SynchronousQueue

    简介 SynchronousQueue是一种特殊的阻塞队列,该队列没有容量. [存数据线程]到达队列后,若发现没有[取数据线程]在此等待,则[存数据线程]便入队等待,直到有[取数据线程]来取数据,并释 ...

  2. JMeter转制LoadRunner HTTP协议脚本的小技巧

    对于Http协议的请求,除了手工编写脚本外,JMeter还提供了录制浏览器操作的功能,甚是方便.那如果手头有一堆HTTP协议的LoadRunner脚本,能不能比较快速的转制成JMeter脚本呢?其实也 ...

  3. Jenkins安全

    Jenkins安全 在Jenkins中,可在 Jenkins 实例建立用户和他们的相关权限.默认情况下,不希望每个人都能够在 Jenkins 中定义工作或其他管理任务.因此,Jenkins 必须有一个 ...

  4. python属性访问

    1.python属性访问魔法方法: >>> class C: def __getattribute__(self,name): print("getattribute&qu ...

  5. LinuxMint 18.3禁用ipv6

    编辑/etc/sysctl.conf文件,添加如下内容 net.ipv6.conf.all.disable_all = 1 保存后执行 sudo sysctl -p 即可生效

  6. 快手hr面

    快手hr面 20180918 自我介绍 hr部门介绍 效率工程 主要问题 问我对部门是否有感兴趣? 我要求地点在北京,然后就畅聊口音.老家,学校等 学校的成绩?(研究生.本科) 自己属于哪类学生?(属 ...

  7. mysql安装(rpm)

    mysql安装(rpm) 1.卸载系统自带的 mariadb-lib [root@centos-linux ~]# rpm -qa|grep mariadb mariadb-libs-5.5.44-2 ...

  8. 如何解决zabbix snmp异常超时、不稳定、时通时断:Timeout

    针对平时工作中,zabbix snmp出现异常超时.不稳定.时通时断:Timeout while connecting 等的情况,以下我将以使用乐维监控为例,进行解决方案的详细叙述.   一.问题:设 ...

  9. dirname命令详解

    基础命令学习目录首页 原文链接:https://blog.csdn.net/xiaofei125145/article/details/50620281 示例一 来自手册页的例子 $ dirname ...

  10. 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实  验  报  告 课程: Java        班级:1352          姓名:黄伟业         学号:20135215 成绩:           ...