Nginx图片防盗链、缓存和压缩的示例
一、图片防盗链
简单即是最好,最简单的方法是用ngx_http_referer_mmodule模块的valid_referers参数来构建,这也是最常见和最常用的方法:
1
2
3
4
5
6
7
8
9
|
location ~* \.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers none blocked www. test .com test .com;
if ($invalid_referer){
rewrite ^/ http: //www . test .com /return .html;
#return 403;
}
expires 15d;
}
|
ngx_http_referer_mmodule模块参考:http://nginx.org/en/docs/http/ngx_http_referer_module.html
二、图片缓存
利用nginx的ngx_cache_purge模块和ngx_http_proxy_module模块进行构建;
ngx_cache_purge模块: http://wiki.nginx.org/CachePurgeChs
ngx_http_proxy_module模块: http://nginx.org/en/docs/http/ngx_http_proxy_module.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
user nginx;
worker_processes 8;
error_log /usr/local/webserver/nginx/logs/nginx_error .log crit;
pid /usr/local/webserver/nginx/nginx .pid;
#Specifies the value for maximum file descriptors that can be opened by thisprocess.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http
{
include mime.types;
default_type application /octet-stream ;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text /plainapplication/x-javascript text /css application /xml ;
gzip_vary on;
#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path /data0/proxy_temp_dir ;
#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为5GB。
proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;
server #此处为缓存服务器
{
listen 80;
server_name your_server_ip;
location /
{
proxy_cache cache_one;
#对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid 200 304 12h;
#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http: //your_server_ip :8080; #此处跳转到真实的图片服务器
log_format cache '***$time_local '
'$upstream_cache_status '
'Cache-Control: $upstream_http_cache_control '
'Expires: $upstream_http_expires '
'"$request" ($status) '
'"$http_user_agent" ' ; #定义日志格式(此日志格式可以显示hit miss等,显示缓存是否被击中,老版本默认可以,但是新版本,发现需要加上这个)
access_log /var/log/nginx/cache .log cache; #使用这个日志格式
expires 1d;
}
#用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。
location ~ /purge (/.*)
{
#设置只允许指定的IP或IP段才可以清除URL缓存。
allow 127.0.0.1;
deny all;
proxy_cache_purge cache_one$host$1$is_args$args;
}
#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。
location ~ .*\.(php|jsp|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
access_log off;
}
#真实的图片服务器
server
{
listen 8080;
server_name your_server_ip;
location /
{
root /;
}
access_log /usr/local/webserver/nginx/logs/nginx_access .log;
}
}
|
三、图片压缩
ngx_cache_purge模块: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
1
2
3
4
5
6
7
8
|
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text /plain application /x-javascript text /css application /xml application /x-httpd-php image /jpeg image /gif image /png ;
gzip_vary on;
gzip_disable "MSIE [1-6]\." ;
|
第1行:开启Gzip
第2行:不压缩临界值,大于1K的才压缩,一般不用改
第3行:buffer,就是,嗯,算了不解释了,不用改
第4行:用了反向代理的话,末端通信是HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是HTTP/1.1
第5行:压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧
第6行:进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式就行了
第7行:跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding",我不需要这玩意,自己对照情况看着办吧
第8行:IE6对Gzip不怎么友好,不给它Gzip了
本文转自 bannerpei 51CTO博客,原文链接:http://blog.51cto.com/281816327/1622385,如需转载请自行联系原作者
Nginx图片防盗链、缓存和压缩的示例相关推荐
- Nginx 图片防盗链
2019独角兽企业重金招聘Python工程师标准>>> 在server中配置如下: location ~* b(?!logob)w+.(gif|jpg|png|swf|flv)$ { ...
- 【Nginx】Nginx实现图片防盗链
目录 Nginx有三种方法可以进行防盗链 1.对Nginx下所有项目的指定资源不同文件类型进行防盗链 2.对指定目录或者指定项目目录进行防盗链 3.nginx 的第三方模块ngx_http_acces ...
- lnmp/nginx系统真正有效的图片防盗链完整设置详解
http://www.it300.com/article-15345.html 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! ...
- 防盗链Nginx设置图片防盗链
切记,替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片其实也处于防盗链情况下,会造成仍旧无法显示设置的图片. 一.全站图片防盗链 在/usr/local/nginx/conf/nginx. ...
- Nginx(七)防盗链
一 基本铺垫 盗链的理解 ① 什么是盗链 盗链就是'盗用'别的网站的'链接'1)'大佬'建一个网站,'提供下载'以提高自己知名度和吸引力,这样你就必须有'空间存储'那些供人们下载的资源2)'不劳 ...
- Nginx配置防盗链
Nginx配置防盗链 进入Nginx配置文件: [root@LHQ vhosts]# vim test.conf server { listen 80; server_name www.test.co ...
- 配置Nginx的防盗链,实现网站资源防盗
前言 在项目中,经常会有不想让本站点的静态资源被他人盗取访问的需求.比如网站中的图片,前端加载的一些js文件等.此时,就可以配置nginx的防盗链来实现网站资源的防盗. 当然,此方案的前提是前端资 ...
- Nginx下载防盗链(迅雷等下载软件)
什么是下载盗链 假设我们是一个B站,有些视频资源是可以提供给用户下载的.这时迅雷等其他下载软件,也提供下载该视频的服务, 但是迅雷很不厚道的,将我们的下载资源提供给他的用户,下载.占用我们的带宽来 ...
- LAMP架构之nginx:nginx重定向+防盗链
LAMP架构之nginx:nginx重定向+防盗链 一.nginx重定向 1.防止域名恶意解析到服务器IP,rewrite(URL重定向) 2.重定向做全站加密 3.网站的整体迁移 二.nginx防盗 ...
最新文章
- pytorch bceloss测试
- TOPCODER SAM 686 div1 300
- 解决Cesium无法加载出地球的问题
- PE文件格式--------------导出表
- SAP Spartacus B2B Unit page Expand all按钮的工作原理
- 第1篇:Flowable简介
- 弗拉门戈-吉普赛婚礼-保利剧院
- insertBefore方法(javascript与jQuery)
- r 语言初学者指南_自然语言处理初学者指南
- JSZip的简单使用
- matlab传递函数状态方程转换,利用matlab对状态方程与传递函数转换
- 夜神模拟器连不上android studio了
- raspbain系统连接家庭wifi的配置方法
- html+css基础教程入门之CSS 尺寸
- 帝国站长php主动推送,帝国CMS 链接主动推送插件设置帮助
- 凸包 初学 Andrew 和 Melkman (模板) 旋转卡(qia)壳(ke)
- ChatGPT、文心一言、New Bing到底哪个更AI?
- 功放限幅保护_为什么要对放大器限幅?
- 如何解决mac拔掉耗电量太大的设备以重新启用usb设备
- sqlserver/mysql 替换部分位置的字符串
热门文章
- 无线扩展器怎么连接好友服务器失败怎么办,tplink无线扩展器怎么设置 tplink无线扩展器设置方法...
- 485不用双绞线可以吗_刘兴亮丨有了北斗,中国可以不用GPS吗
- postman电脑版无法安装_Postman 安装及使用入门教程
- jQuery的创建对象,动态添加、修改、删除属性和方法
- python列表输出字符串,如何在python中输出utf-8字符串列表?
- spss多元线性回归散点图_案例分析 | 多元线性回归及SPSS操作
- 2019小程序没必要做了_企业发展小程序的必要原因
- Linux系统下网卡网络配置基础
- TensorFlow可以“预装”数据集了,新功能Datasets出炉
- 肖健雄的无人车公司AutoX,现在要在美国配送生鲜了