宝塔面板–Nginx反向代理原文件永久缓存的配置
操作环境:宝塔Linux面板,Nginx环境
操作目的:将目标站点的文件按照原文件目录结构完整缓存到本地指定目录。
写这篇教程的原因
今天群里一个同学问火车头采集的问题。目标采集站点文章内图片是调用的新浪图片地址,火车头在采集时提示:“添加文件下载时出错,原因:没有探测到文件真实地址”
图片分布在wx1.sinaimg.cn、wx2.sinaimg.cn、wx3.sinaimg.cn、wx4.sinaimg.cn这四个新浪的图片服务器上。
研究了挺久没有找到该问题在火车头采集器上的解决方式。好像是目标服务器不支持head请求。既然无法解决此问题所以想了下其他的迂回方式。
此次采集目的是为了将远程图片保存到自己的服务器,避免后期远程服务器删除图片。我们的操作只要达到保存远程图片的目的即可。
本文涉及到火车头采集器方面的一些操作,所以步骤略多。我会尽量按照顺序给大家写清楚,如果有疑问大家可以在文章下留言。我看到后会一一回复。
整体思路
1.将wx1.sinaimg.cn、wx2.sinaimg.cn、wx3.sinaimg.cn、wx4.sinaimg.cn这四个图片服务器地址全部反向代理并缓存下来。
2.火车头采集器在采集时将图片地址替换为我们的反向代理地址。
3.后期通过访客访问或者我们自己主动访问,将图片全部缓存到反向代理服务器。达到长期存储的目的。
操作步骤
1.创建反向代理
首先我们在服务器解析一个新域名(随意),作为我们的图片服务器地址,并且给这个站点添加反向代理。
经测试wx1.sinaimg.cn、wx2.sinaimg.cn、wx3.sinaimg.cn、wx4.sinaimg.cn这四个图片服务器里面的图片地址,可以任意替换使用!
比如https://wx3.sinaimg.cn/mw1024/1.jpg我将域名换为https://wx1.sinaimg.cn/mw1024/1.jpg也可以正常访问。
这样就简单多了,我们反向代理只需要创建一个即可。这里就以反代wx3.sinaimg.cn为例。
正常创建反向代理并填入代理地址,缓存和高级设置不用管,直接提交保存即可。
2.修改反向代理
宝塔面板默认反向代理是将缓存文件存储到了/www/server/nginx/proxy_cache_dir目录,而且缓存的文件并非是原文件。后期无法维护。
我们修改下反向代理配置文件。
location / {
if (!-e $request_filename) {
proxy_pass http://wx3.sinaimg.cn;
}
root /www/wwwroot/www.xxxxxx.com;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path cache_tmp;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
}
将上面反向代理配置修改下proxy_pass代理地址和root缓存目录,然后填入保存即可。缓存目录建议就设为你反向代理域名的网站目录,后期关闭反向代理,文件也可以正常访问。
3.修改火车头采集器设置
火车头采集器上我们将wx1.sinaimg.cn、wx2.sinaimg.cn、wx3.sinaimg.cn、wx4.sinaimg.cn四个图片地址全部替换一下,替换成我们反向代理的域名地址。
这里替换后我们采集结果图片地址就会是我们反向代理域名地址了。
4.关闭火车头采集器图片下载设置
这一步非常重要。前面我们做的工作是为了缓存下来图片。
这一步我们关闭火车头采集器的图片下载,也就是直接将采集的结果发布到网站上去。
因为我们上一步已经替换过了采集内容的图片地址,所以后期访客访问时,图片是通过你的反向代理域名加载的。
又因为我们反向代理将图片原目录完整缓存了下来。所以后期不管你是关闭反向代理,还是目标服务器删除了图片。都不影响我们文章内图片的正常显示。
注意事项
什么时候可以关闭反向代理?
这个反向代理需要开一段时间,因为反向代理缓存是需要访客访问到了图片后才会缓存下来。有可能你个别文章一直没有人访问,结果里面图片就没有缓存下来。可以自己使用工具访问一遍你的文章,让图片加载一次,加载一次即可完成缓存。
什么时候我需要更改火车头采集器设置?
当你采集完图片地址是wx1.sinaimg.cn这四个的文章后。就需要更改火车头的设置了,改为正常的图片下载设置即可。
这需要我们确定一下采集网站它里面调用的图片地址情况。
Discussion
New Comments
暂无评论。 成为第一个!