在LNMPA环境下Joomla的防盗链方法
LNMPA(Linux、Nginx、MySQL、PHP、Apache)是一种比较有优势的web服务器架构,也十分适用于Joomla网站使用。下面主要是讨论在在LNMPA环境下Joomla的防盗链方法。
在LNMPA环境下,我们可以正常使用.htaccess文件来进行对joomla网站的url优化和重定向等工作,致使我以为防盗链也是在.htaccess文件里配置。但我按照Joomla官方的教程配置后,并没有效果。
在网上搜索了一些资料,但也没找到关于LNMPA环境下防盗链的讨论,不过按照LNMPA的机理(LNMPA使用Nginx作为前端服务器,能够更快、更及时地使用更少的系统资源处理静态页面、js、图片等文件,当客户端请求访问动态页面时,由Nginx反向代理给作为后端服务器的Apache处理,Apache处理完再交予Nginx返回给客户端)我们有理由相信防盗链的功能是由nginx的配置文件实现。
经我测试后,确定修改nginx的配置文件可以实现防盗链功能。配置如下:
location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv|js|css)$ {
valid_referers none blocked *.ycway.com ycway.com;
if ($invalid_referer) {
#rewrite ^/ http://www.ycway.com/;
return 403;
}
}
凡是修改了nginx的配置,都要重启nginx才能生效。
如果你没有使用LNMPA架构,而是使用LAMP(Linux、Apache、MySQL、PHP,),Joomla建站更常用的一种网站服务器架构,可以直接修改网站的.htaccess文件来添加防盗链功能。
## Referrer filtering for common media files. Replace with your own domain name.
## This blocks most common fingerprinting attacks ;)
## Note: Change www\.example\.com with your own domain name, substituting the
## dots with \. i.e. use www\.example\.com for www.example.com
RewriteRule ^images/stories/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|ico)$ - [L]
RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.(jp(e?g|2)?|png|gif|bmp|css|js|swf|ico)$ - [F]