Apache配置域名跳转、日志切割、静态缓存、防盗链

·/usr/local/apache2/bin/apachectl -M:查看安装了哪些模块 

·/usr/local/apache/bin/apachectl  -V:查看使用的模式    
·/usr/local/apache2/bin/apachectl -t:检查语法错误   

·/usr/local/apache2/bin/apachectl -l:查看安装的库文件

·/usr/local/apache2/bin/apachectl graceful:重新加载配置
·/usr/local/apache2/htcocs         主页存放目录

·/usr/local/apache2/bin/apachectl  启动文件目录

·/usr/local/apache2/conf           配置文件路径               
1.域名跳转 

·网站可以设置域名多个域名别名,设置访问别名是跳转到主域名
·主域名为www.1.com别名为www.a.com,www.b.com。访问别名时跳转到www.1.com
·301是永久跳转,302是暂时跳转,有多个域名要跳转与要加【OR】
在虚拟主机配置文件中加入:  

vim  /usr/local/apache/conf/extra/httpd-vhost.conf        

    <IfModule mod_rewrite.c> 

        RewriteEngine on                                       重写引擎 [开启]

        RewriteCond  %{HTTP_HOST}  ^www.a.com$                 重写条件:是www.a.com时

        RewriteRule   ^/(.*)$  www.1.com /$1  [R=301,L]        重写规则:跳转到www.1.com

    </IfModule>


2.日志轮询(切割)
(1)Apache主配置文件中定义的日志格式,第一种是复杂格式,第二种是普通格式(工作中用复杂格式)

     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""   combined 

     LogFormat "%h %l %u %t \"%r\" %>s %b"  common   
(2)访问日志格式解释:
         %h:客户机的IP地址
         %l:客户机登陆名称
         %u:认证用户
         %t:访问的日期、时间
         %r:客户访问的方式,访问的什么资源,什么协议
         %>s 请求对应的状态码 (2开头正常,3开头被重定向,4开头客户端存在错误,5开头服务器端遇到错误)   
         %b:传送的字节数
         % {Referer}:从哪个页面来的(比如从百度搜索到的QQ空间,那Referer就是百度
         %{User-Agent}:客户用的什么浏览器

(3)配置日志切割:避免产生大文件, 可以每天生成一个
·在httpd.conf里定义日志格式,虚拟主机里只是调用日志格式
·/usr/local/apache2/conf/httpd.conf中定义日志格式
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""   combined 
·/usr/local/apache2/conf/extra/httpd-vhost.conf中,用rotatelog工具做日志切割时调用

·在虚拟主机配置文件中加入 

 CustomLog "|/usr/local/apache2/bin/rotatelogs -l/usr/local/apache2/logs/access_%Y%m%d.log 86400 " combined

·第一段:rotatelog工具路径  第二段:日志存放路径和命名(按年月日命名)第三段:调用httpd.conf中的日志格式为combined格式

完整配置:

ErrorLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/oem.discuz.qq.com-error_%Y%m%d.log 86400"
    SetEnvIf Request_URI  ".*\.gif$ "    image-request     #定义需要过滤的内容
    SetEnvIf Request_URI  ".*\.jpg$"   image-request
    SetEnvIf Request_URI  ".*\.png$"  image-request
    SetEnvIf Request_URI  ".*\.bmp$" image-request
    SetEnvIf Request_URI  ".*\.swf$"   image-request
    SetEnvIf Request_URI  ".*\.js$"     image-request
    SetEnvIf Request_URI  ".*\.css$"   image-request
    CustomLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/oem.discuz.qq.com-access_%Y%m%d.log 86400" combined env=!image-request    #过滤出image-request  #取反,日志中不去记录定义的这些

3.静态缓存

·好处:用户第一次访问时,把定义的缓存在浏览器中,第二次访问就不需要再次请求,加快访问速度

·定义图片、css、js、swf过期时间   
·使用的模块:mod_expires.c 
·在虚拟主机配置文件中加入:

  <IfModule mod_expires.c>

     ExpiresActive on     #有效期[打开]

     ExpiresByType image/gif  "access plus 1 day"   #过期的类型 ,访问超过一天

     ExpiresByType image/jpeg "access plus 24 hours"

     ExpiresByType image/png  "access plus 24 hours"

     ExpiresByType image/css  "now  plus 2 day"

     ExpiresByType application/javascript       "now plus 2 hours"

     ExpiresByType application/shockwave-flash  "now plus 2 hours"

     ExpiresDefault "now plus 0 min"

   </IfModule>

</VirtualHost> 


·缓存时间测试:curl -x127.0.0.1:80 www.a.com/1.gif

4.防 盗链      
·防止网站的图片、文档、音乐等格式他人盗用链接,只允许指定的域名可以链接
·盗链:把别人网站上的一张图片,复制链接,然后发在自己的网站上,用户来访问自己网站,承受负担和流量的是别人的服务器。 
      模板如下,定义的文件格式可自行添加:

 <Directory  /data/www>  

       SetEnvIfNoCase Referer  "www.1.com"   local_ref       #定义访问的域名

       SetEnvIfNoCase Referer  "www.a.com"   local_ref       #定义访问的域名

       SetEnvIfNoCase Referer  "www.b.com"   local_ref       #定义访问的域名

       SetEnvIfNoCase Referer  "^$"          local_ref    

          <filesmatch "txt|doc|mps|rar|zip|jpeg|png|jpg|gif">   #定义禁止盗链的格式

             Order Allow,Deny

             Allow from env=local_ref  #这里设置规则,允许还是不允许

           </filesmatch>

    </Directory>


·使用curl -e  检测防盗链 
·解释:域名是SetEnvIfNoCase 中定义的才可以访问filesmatch中定义的禁止盗链的内容 
·注意:如果是上边定义的域名以外的域名会显示403错误
·其他网站使用盗链地址出现403错误,401错误是有用户认证 需要加 -u参数 


5.某个目录下禁止解析php(防止看到源代码) 

 <Directory /data/www/uc_server>

      php_admin_flag_engine off       关闭解析

        <filesmatch "(.*)php">        文件匹配是php结尾的

           Order Deny,Allow           先拒绝后允许

           Deny from all              拒绝所有

         </filesmatch>

  </Directory>

6.访问控制

·禁止用IP访问网站

 <Directory /data/www>

   Order allow,deny

   Deny from all

 </Directory>

·对wordpress后台主页做访问控制

 <Directory /data/www/wp-admin>

  <filesmatch "index.php">

   Order deny,allow

   Deny from all

   Allow from 127.0.0.1

  </filesmatch>

 </Directory>

测试:网页进入后台,后出现403 forbidden。

7.禁止解析php

 ·禁止解析不是禁止访问,是禁止解析出php源代码

<Directory /data/www/wp-admin>

php_admin_flag engine off    #关闭解析

 <filesmatch "(.*)php">     #/data/www/wp-admin目录下任何php的文件,都禁止解析

   Order deny,allwo

   Deny from all        

 </filesmatch>

</Directory>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章