最近在作一些事情的时候发现有的网站作了图片的防外链功能,简单来讲不是本网站的url访问不了本站的图片、仔细分析了一下,想到了用nginx的反向代理设置referer能够解决这个问题,再次证实了web网站全部来自浏览器端提交的东西都不靠谱,都须要验证。php
想一想防外链大都是经过检查请求中的http referer来实现的(也能够用token来作仿外链,这个比较难搞)。若是经过反向代理来动态指定http referer是否是能够解决问题。立刻动手.java
location /get/ { set $hostx ""; set $addrs ""; if ( $uri ~ "^/get/http./+([^/]+)/(.+)$") { set $hostx $1; set $addrs $2; } resolver 127.0.0.1; proxy_pass http://$hostx/$addrs; proxy_set_header referer "http://$hostx"; }
注意resolver要指向一个有效的dns服务器(快速查看本机dns服务器地址的命令:cat /etc/resolv.conf)nginx
能够结合nginx的location的配置来看 : http://www.eit.name/blog/read.php?497web
~打下无节操有底线广告,欢迎关注: 点我浏览器