自从加上CDN后,流量就是金钱,为了防止别的网站非法添加外链,这不,使出杀手锏。
效果:
你是不是看到打XX了,那就证明防盗链效果生效了。当然我这种只是在源站配置,一旦你采用cdn后还要在cdn供应商那里配置才可以。
先贴上我的配置文件,www.nnjiaju.com.conf
server { listen 80; server_name s1.nnjiaju.com; root /home/webroot/s1.nnjiaju.com; index index.html index.htm; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; valid_referers none blocked *.nnjiaju.com nnjiaju.com www.ruitop.com; if ($invalid_referer) { return 404; } } }
好了,简单说一下,gif|jpg|jpeg|png|bmp|swf这些表示被保护的对象,expires 30d 表示我对这些文件启用缓存30天,*.nnjiaju.com nnjiaju.com www.ruitop.com ,这里可以看到有一个通配符,表示我对所有以nnjiaju.com为主域的都允许使用,特例我还额外添加了www.ruitop.com的域名也能使用,其他的域名外链统统404。当然你还可以设置个性页面 只需要将return 404改成 rewrite ^/ http://www.markdream.com/404.html也可以,具体的内容你可以自己定制。
PS:如果你的配置文件有多个以“location ~ .*\.”开头的,根据至上而下的配置规则你设置的防盗链会失效,解决办法就是合并,下面我贴上我在生产环境下的对于各个文件类型的缓存设置和防盗链设置,希望对你有所帮助,demo.conf。
server { listen 80; server_name www.nnjiaju.com; root /home/webroot/www; index index.html index.htm index.php; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|txt)$ { expires 30d; valid_referers none blocked *.nnjiaju.com nnjiaju.com; if ($invalid_referer) { return 502; } } location ~ .*\.(js|css)$ { expires 7d; valid_referers none blocked *.nnjiaju.com nnjiaju.com; if ($invalid_referer) { return 502; } } access_log logs/access.demo_www.log; error_log logs/error.demo_www.log; location / { } }