首页 > 代码库 > Nginx + Tomcat 环境下的防图片盗链配置
Nginx + Tomcat 环境下的防图片盗链配置
本来觉得是个挺简单的事情,仔细看了下还是有一些细节需要注意的。网上基本都是仅nginx环境下的配置,这里给一个用Nginx+Tomcat结构的配置及其简要说明,主要有以下两个步骤,选任意一个方案即可。
1. Nginx防盗链的配置
a. 方法一:增加ngx_http_accesskey_module模块,但是需要相应的配置,网上相关资料很多,不赘述。
■ 优点:控制的逻辑严密,非常可靠地解决方案。
■ 缺点:需要做较多的修改。
b. 方法二:直接增加Refer的判断,对于不符合设定的请求予以禁止。这里有个地方需要注意,后端有Tomcat,所以还要加上proxy pass的相关配置。
# 防止图片盗链,只判断refer是否为本站 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers none blocked *.taoximao.com taoximao.com; if ($invalid_referer) { return 403; } # 要加上后端访问的地址 proxy_redirect off; proxy_pass http://web_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
■ 优点:配置相当简单,也不用安装其他模块。
■ 缺点:无法防止别人伪造Refer信息,也就是说人家真的想去偷窃,稍微麻烦点还是阻止不了;另外还发现如果refer为空还是能正常访问到,控制放的很宽。
2. Tomcat禁止直接访问的配置
(注:如果Tomcat还能直接访问,其实Nginx的那个防盗链就没意义了,加个端口就跳过配置了)
a. 方法一:在Linux下配置iptables,将8080的端口禁止外网访问即可,这样就只能通过Nginx来访问。网上很多资料,不赘述。
■ 优点:直接系统级别配置,与应用本身无关,高度可靠。
■ 缺点:额外配置,配置起来也有点麻烦。
b. 方法二:直接配置Tomcat允许的访问IP,精确到每个Host。只要修改tomcat下的conf/server.xml文件,在Host之间加上允许的访问IP即可,直接访问会返回403错误。
<Host name="test1.taoximao.com" appBase="webapps_test1" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1" deny=""/> </Host>
■ 优点:配置简单,实现的效果也能满足需要。
■ 缺点:网上介绍很少,还是去查官方文档吧。
Nginx + Tomcat 环境下的防图片盗链配置