内容大致分为 个板块(在discuz论坛环境下)
1:用户认证模式;
2:域名跳转
3:访问日志的切割与选择
4:静态缓存
5:防盗链
6:访问控制
虚拟主机配置文件中,需要加入
<Directory /data/www/admin.php>
AllowOverride AuthConfig
AuthName "frank share web"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</Directory>
保存后,然后
创建apache的验证用户
/usr/local/apache2/bin/htpasswd -c /data/.htpasswd pekut(验证用户名)
然后输入俩次密码
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数
/usr/local/apache2/bin/htpasswd /data/.htpasswd pekut1
如果你想修改密码,可以如下
/usr/local/apache2/bin/htpasswd -m .htpasswd test2
-m 为 制定为md5加密算法
cat /data/.htpasswd 查看用户是否生成
重启apache,即可。
到此,你已经配置完成。下面介绍另一种方式:
##################################
vi http.conf
在相应的虚拟主机配置文件段,加入
<Directory *>
AllowOverride AuthConfig
AuthName "自定义的"
AuthType Basic
AuthUserFile /data/.htpasswd // 这个目录你可以随便写一个,没有限制
require valid-user
</Directory>
保存后,然后
创建apache的验证用户
htpasswd -c /data/.htpasswd test
需求:要把访问域名 www.domain1.com 的域名转发到 www.domain2.com 上
实现:在相关的虚拟主机中增加
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.onda.com$ //条件(被跳转地址)
RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L] //规则 (跳转至)
</IfModule>
效果 输入 www.onda.com/fdsfdf 跳转到 www.111.com/fdsfdf
重启apache 服务生效
如果是多个域名重定向到一个域名
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.onda.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.ondas.com$
RewriteRule ^(.*)$ http://www.111.com/$1 [R=301,L]
</IfModule>
rewrite 支持正则
3. 配置apache的访问日志 (tail -f /tmp/1.log )
vim /usr/local/apa/conf/http 找到 LogFormat ( 此行最后 一段白色字母 是命名 )
新加一行LogFormat 最后 将命名更改掉
打开虚拟主机配置文件 清除注释 CustomLog "/tmp/1.log" suiyiname 将引号内修改为自己想指定的日志目录
写在 虚拟主机 配置文件 CustomLog "/tmp/1.log" suiyiname 的上面
用来节约磁盘空间,日志内不记录图片类文件
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/apache2/bin/rotatelogs -l /tmp/access_%Y%m%d.log 86400" suiyiname env=!image-request
按照天来切割 按每天算
4.配置静态缓存(伪静态)
httpd.vhost 中加入
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
注释:
Expires 语法如下:
ExpiresByType type/encoding "<base> [plus] <num> <type>}*"
其中<base>是下列之一:
access
now (等价于‘access‘)
modification
plus关键字是可选的。
<num>必须是整数,
<type>是下列之一:
years
months
weeks
days
hours
minutes
seconds
5.防盗链
位置一般情况下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加
SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref
SetEnvIfNoCase Referer "^http://ccvita.com" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
Deny from !env=local_ref
</filesmatch>
还一种写法,是用正则的,这种写法在各个版本的apache比较通用。
写法是
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
Deny from all
</filesmatch>
配置完防盗链后 访问网站会出现无法显示 图片的情况。
6.访问控制
个东西确实挺容易让我们迷糊。其实也不难,只要你掌握这样一条规律即可:
首先举个例子:
Order deny,allow
deny from all
allow from 127.0.0.1
我们判断的依据是这样的:
1. 看Order后面的,后面的优先级大于前面的
2. 如果deny在前,那么就需要看deny from 这句,然后看allow from 这一句
3. 规则是一条一条的匹配的,不管是deny在前还是allow在前,都是会生效的。比如例子中,先deny 了所有,然后又allow了127.0.0.1,所以127.0.0.1是通过的。
不妨再多举几个例子:
Order allow,deny
deny from all
allow from 127.0.0.1
这个就会deny所有了,127.0.0.1也会被deny。因为顺序是先allow然后deny,虽然一开始allow了127.0.0.1,但是后面又拒绝了它。
Order allow,deny
deny from all
全部都不能通行
Order deny,allow
deny from all
全部都不能通行
Order deny,allow
全部都可以通行(默认的),记住即
Order allow,deny
全部都不能通行(默认的),记住即可