当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪Apache 防盗链的技术小结       一. 遭遇图片盗链   个人网站使用的是国外付费空间,有流量限制。今天是 2007.03.29,收到主机商的通知邮件,提醒我本月的流量即将超出配额。——超出流量,就要向万恶的美帝资本家.........
    ▪基于Nginx0.8.54+PHP5.3.4+MySQL5.5.8的全新LNMP稳定版架构搭建的VPS       虽然开始在MySQL5.5.8的编译过程中遇到了一些问题,因为之前从未接触过Cmake方式的编译,在查阅官方手册并结合谷歌,终于把问题搞定了。 目前Nginx的worker_processes设置为4,php-fpm设置为dynami.........
    ▪nginx禁止某个IP访问站点的设置方法       首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf: deny 95.105.25.181; 保存一下。 在nginx的配置文件nginx.conf中加入:include blocksip.conf; 重启一下nginx的服务:/usr/local/nginx/sbin/ngin.........

[1]Apache 防盗链的技术小结
    来源: 互联网  发布时间: 2013-12-24
一. 遭遇图片盗链
  个人网站使用的是国外付费空间,有流量限制。今天是 2007.03.29,收到主机商的通知邮件,提醒我本月的流量即将超出配额。——超出流量,就要向万恶的美帝资本家交银子,吓我一跳,平常网站的流量根本使用不完,马上查看 awstats 的日志分析,没有发现什么异常。于是把 access log 日志拉下来,用逆火网站日志分析器检查了一下站点盗链情况,发现本站的 深圳高交会之神州龙芯 CPU 映象记[图文] 以及 香港2005年春季行(3) - 庙街风光等原创文章中的图片,被许多网站直接盗链,造成流量占用大幅上升。

  国内网站盗链成风,最倒霉的就是咱们这种使用付费主机有流量限制的个人了。没办法,只得加上了一个简单的反盗链(Anti-Leech)措施。我的服务器是 Apache,处理防盗链比较简单,解决之后,于是写下这篇笔记。

二. 使用 rewrite 技术实现 Apache 防盗链
  Apache 防盗链的第一种实现方法,可以用 rewrite 实现。首先要确认 Apache 的 rewrite module 可用:能够控制 Apache httpd.conf 文件的,打开 httpd.conf,确保有这么一行配置:
代码如下:

LoadModule rewrite_module modules/mod_rewrite.so

然后在找到自己网站对应的 配置的地方,加入下列代码:
代码如下:

ServerName
# 防盗链配置
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http:///.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www./.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www./about/nolink.png [R,NC]

防盗链配置的说明:
  • 红色部分: 表示自己的信任站点。对我的站点来说,设置为 http://www.xiaohui.com 和 http://xiaohui.com
  • 绿色部分: 要保护文件的扩展名(以|分开)。以这些为扩展名的文件,必须通过红色标注的网址引用,才可以访问。
  • 蓝色部分: 盗链后的重定向页面。用以输出警示信息,这张图片应该尽可能的小。例如我的警示图片是 http://www.xiaohui.com/about/nolink.png。为了简单处理的原因,我的绿色字体部分,要保护的图片扩展中,没有 .png 的图片,而警示图片是 .png的。(我站内没有 .png的其他图片)
  •   然后重新启动 apache 服务器即可。

      有些用户使用的是虚拟主机,没有服务器的控制权,无法修改 httpd.conf 文件和重启服务器。那么请确认你的虚拟主机支持 .htaccess,将上面的配置写入 .htaccess 文件,放入根目录或图片所在的目录即可:

    代码如下:

    .htaccess 文件的内容:
    # 防盗链配置
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http:///.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www./.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.$ [NC]
    RewriteRule .*\.(gif|jpg|swf)$ http://www./about/nolink.png [R,NC]

     注意:

    1、httpd.conf 文件里的配置,是在 apache 启动时一次读取,效率很高
    2、.htaccess 文件里的配置,每次访问都需要读取分析,效率很低。

    三. 使用 SetEnvIfNoCase 和 access 技术实现 Apache 防盗链

    另一种方式是利用 SetEnvIfNoCase 和 access。具体的代码如下:
    代码如下:

    SetEnvIfNoCase Referer "^http://" local_ref=1
    SetEnvIfNoCase Referer "^http://www." local_ref=1

    Order Allow,Deny
    Allow from env=local_ref

    将上述代码,放入前面所讲的 httpd.conf 或 .htaccess 文件即可。

    四. Apache 防盗链的技术小结

      通过判断 referer 变量的值,判断图片或资源的引用是否合法,只有在设定范围内的 referer,才能访问指定的资源,从而实现了防盗链(Anti-Leech)的目的。需要指出的是:不是所有的用户代理(浏览器)都会设置 referer 变量,而且有的还可以手工修改 referer,也就是说,referer 是可以被伪造的。本文所讲的,只是一种简单的防护手段。当然,应付一般的盗链也足够了。
    五. 参考资料
    • Apache Documentation: Authentication, Authorization and Access Control (v2.2)
    • Apache Documentation: htaccess files (V2.2)
    • 逆火网站日志分析器

    原文:http://www.xiaohui.com

        
    [2]基于Nginx0.8.54+PHP5.3.4+MySQL5.5.8的全新LNMP稳定版架构搭建的VPS
        来源: 互联网  发布时间: 2013-12-24
    虽然开始在MySQL5.5.8的编译过程中遇到了一些问题,因为之前从未接触过Cmake方式的编译,在查阅官方手册并结合谷歌,终于把问题搞定了。

    目前Nginx的worker_processes设置为4,php-fpm设置为dynamic模式,max_children=32,start_servers=8,min_spare_servers=4,max_spare_servers=16,max_request=512的环境下,540MB内存剩余380MB,相比之前用Zend Server CE搭建的LAMP内存开销,优化效果还是十分明显的,而且网站速度也很理想,给我最大的感受就是页面请求的响应速度比以前大大提升了。

    鉴于MySQL5.5.8这个新产品发布不久,网上的相关资料匮乏,补充一些自己在编译上的内容(注意,我因为自己对innodb无需求,因此屏蔽了innodb引擎,如果需要可以开启参数-DWITH_INNOBASE_STORAGE_ENGINE=1。
    代码如下:

    #download software package
    wget http://www.cmake.org/files/v2.8/cmake-2.8.3.tar.gz
    wget http://ftp.gnu.org/gnu/bison/bison-2.4.3.tar.gz

    tar zxvf cmake-2.8.3.tar.gz
    cd cmake-2.8.3/
    ./configure --prefix=/usr
    gmake
    gmake install
    cd ../
    tar zxvf bison-2.4.3.tar.gz
    cd cd bison-2.4.3
    ./configure
    make
    make install

    #install mysql5.5.8
    /usr/sbin/groupadd mysql
    /usr/sbin/useradd -g mysql mysql
    mkdir -p /data/mysql
    chown -R mysql:mysql /data/mysql
    tar zxvf mysql-5.5.8.tar.gz
    cd mysql-5.5.8
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITHOUT_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc/ -DWITH_SSL=yes -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=on
    make
    make install
    /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql --user=mysql

    #modify mysql config
    vim /etc/my.cnf

    [client]
    port = 3306
    socket = /tmp/mysql.sock
    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    skip-external-locking
    key_buffer_size = 256M
    max_allowed_packet = 1M
    table_open_cache = 256
    sort_buffer_size = 1M
    read_buffer_size = 1M
    read_rnd_buffer_size = 4M
    myisam_sort_buffer_size = 64M
    thread_cache_size = 8
    query_cache_size= 16M
    thread_concurrency = 1
    basedir = /usr/local/mysql
    datadir = /data/mysql
    default-storage-engine = myisam
    log-bin=mysql-bin
    binlog_format=mixed
    server-id = 1
    [mysqldump]
    quick
    max_allowed_packet = 16M
    [mysql]
    no-auto-rehash
    [myisamchk]
    key_buffer_size = 128M
    sort_buffer_size = 128M
    read_buffer = 2M
    write_buffer = 2M
    [mysqlhotcopy]
    interactive-timeout

    #add to boot config
    cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    chkconfig --add mysqld
    /etc/rc.d/init.d/mysqld start
    /usr/local/mysql/bin/mysql -u root -p -S /tmp/mysql.sock

    PS:如果在编译PHP的时候报错error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory,可以通过以下方法解决:
    代码如下:

    ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16

        
    [3]nginx禁止某个IP访问站点的设置方法
        来源: 互联网  发布时间: 2013-12-24
    首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf:

    deny 95.105.25.181;

    保存一下。

    在nginx的配置文件nginx.conf中加入:include blocksip.conf;

    重启一下nginx的服务:/usr/local/nginx/sbin/nginx -s reload 就可以生效了。

    blocksip.conf:的格式还有许多种,可以配置只允许的IP访问或者IP段访问:

    deny IP;

    allow IP;

    # block all ips
    deny all;
    # allow all ips
    allow all;

    其中网段的写法是这样的:192.168.1.0/24这样的形式。

    这样就可以达到目的了。

        
    最新技术文章:
    ▪linux系统中的列出敏感用户的脚本代码
    ▪a10 config backup for aXAPI
    ▪一键备份gitolite服务器的Shell脚本
    ▪nagios 分发文件实现代码
    ▪阿里云云服务器Linux系统更新yum源Shell脚本
    ▪一个监控LINUX目录和文件变化的Shell脚本分享
    ▪Linux下实现SSH免密码登录和实现秘钥的管理、...
    ▪Shell正则表达式之grep、sed、awk实操笔记
    ▪3个备份系统文件并邮件发送的Shell脚本分享
    ▪CentOS 6.3下给PHP添加mssql扩展模块教程
    ▪监控网站是否可以正常打开的Shell脚本分享
    ▪shell脚本编程之if语句学习笔记
    ▪shell脚本编程之循环语句学习笔记
    ▪shell脚本编程之case语句学习笔记
    ▪Shell脚本实现的阳历转农历代码分享
    ▪Shell脚本实现复制文件到多台服务器的代码分...
    ▪Shell脚本实现批量下载网络图片代码分享
    ▪Shell脚本实现检测文件是否被修改过代码分享
    ▪Shell脚本数组用法小结
    ▪Shell脚本批量重命名文件后缀的3种实现
    ▪C语言实现的ls命令源码分享
    ▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
    ▪Shell 函数参数
    ▪linux shell 自定义函数方法(定义、返回值、变...
    ▪Shell实现判断进程是否存在并重新启动脚本分...
    ▪Shell脚本break和continue命令简明教程
    ▪Shell脚本函数定义和函数参数
    ▪让代码整洁、过程清晰的BASH Shell编程技巧
    ▪shell常用重定向实例讲解
    ▪awk中RS、ORS、FS、OFS的区别和联系小结
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3