您的位置:首页 > 运维架构 > Tomcat

Nginx+Tomcat 环境下的防图片盗链配置

2014-09-01 13:42 351 查看
本来觉得是个挺简单的事情,仔细看了下还是有一些细节需要注意的。网上基本都是仅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>
■ 优点:配置简单,实现的效果也能满足需要。
■ 缺点:有时候会出现图片不显示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: