学习笔记
1、域名跳转
1.1、进入配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.cheese.com"
ServerName www.cheese.com
<IfModule mod_rewrite.c> #需要mod_rewrite模块支持
RewriteEngine on #打开rewrite功能
RewriteCond %{HTTP_HOST} !^www.cheese.com$ #定义条件,当主机名不是www.cheese.com时满足条件
RewriteRule ^/(.*)$ http://www.cheese.com/$1 [R=301,L] #定义规则,满足上述条件,就执行这条规则
</IfModule>
</VirtualHost>
1.2、查看httpd是否加载rewrite模块
/usr/local/apache2/bin/apachectl -M|grep -i rewrite
如果没有任何输出就说明没有
编辑配置文件,找到这行,把#删掉,保存退出
vim /usr/local/apache2/conf/httpd.conf
再次验证就有输出了
1.3、验证和重新加载
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
1.4、验证
2、配置访问日志
2.1、进入配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.cheese.com"
ServerName www.cheese.com
ServerAlias cheese.com #后面的域名可以是多个
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.cheese.com$
RewriteRule ^/(.*)$ http://www.cheese.com/$1 [R=301,L]
</IfModule>
CustomLog "logs/cheese.com-access_log" combined #站点访问日志
</VirtualHost>
2.1.1、验证和重新加载
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
2.1.3、curl后查看日志
curl -x127.0.0.1:80 -I cheese.com
tail /usr/local/apache2/logs/cheese.com-access_log
2.2、去除静态元素记录日志
2.2.1、进入配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.cheese.com"
ServerName www.cheese.com
ServerAlias cheese.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.cheese.com$
RewriteRule ^/(.*)$ http://www.cheese.com/$1 [R=301,L]
</IfModule>
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 logs/cheese.com-access_%Y%m%d.log 86400" combined env=!image-request
</VirtualHost>
2.2.2、验证和重新加载
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
2.2.3、curl和查看新生成的日志
curl -x127.0.0.1:80 -I cheese.com
ls /usr/local/apache2/logs/
2.2.4、在/data/wwwroot/www.cheese.com/里创建gif、jpg等文件,再创建一个静态元素里没有的,比如txt文件
touch /data/wwwroot/www.cheese.com/sh.txt
touch /data/wwwroot/www.cheese.com/sh.png
2.2.5、curl和查看新生成的日志内容
可以看出png的没有出现在日志文件中
3、配置静态元素过期时间
3.1、进入配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.cheese.com"
ServerName www.cheese.com
ServerAlias cheese.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.cheese.com$
RewriteRule ^/(.*)$ http://www.cheese.com/$1 [R=301,L]
</IfModule>
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 logs/cheese.com-access_%Y%m%d.log 86400" combined env=!image-request
<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/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
</VirtualHost>
3.2、验证和重新加载、检查httpd是否加载expires模块
/usr/local/apache2/bin/apachectl -M|grep -i expires
没有任何输出,进入httpd配置文件修改
vim /usr/local/apache2/conf/httpd.conf
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
/usr/local/apache2/bin/apachectl -M|grep -i expires
3.3、验证
max-age=0说明没有缓存该类型文件
4、访问控制
4.1、对目录进行访问控制
4.1.1、编辑配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.cheese.com"
ServerName www.cheese.com
ServerAlias cheese.com
<Directory /data/wwwroot/www.cheese.com/admin>
Order deny,allow
Deny from all
Allow from 192.168.233.134
</Directory>
CustomLog "logs/cheese.com-access_log" common
</VirtualHost>
/usr/local/apache2.4/bin/apachectl graceful
4.1.2、验证,只允许192.168.233.134访问
4.2、对某个文件进行控制
4.2.1、编辑配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.cheese.com"
ServerName www.cheese.com
ServerAlias cheese.com
<Directory /data/wwwroot/www.cheese.com/>
<Filesmatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 192.168.233.134
</Filesmatch>
</Directory>
CustomLog "logs/cheese.com-access_log" common
</VirtualHost>
/usr/local/apache2.4/bin/apachectl graceful
4.2.2、验证
5、禁止解析PHP代码
5.1、编辑配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.cheese.com"
ServerName www.cheese.com
ServerAlias cheese.com
<Directory /data/wwwroot/www.cheese.com/upfile>
php_admin_flag engine off
</Directory>
CustomLog "logs/cheese.com-access_log" common
</VirtualHost>
5.2、重新加载和验证
/usr/local/apache2/bin/apachectl graceful
没有解析成功
6、user_agent
6.1、编辑配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.cheese.com"
ServerName www.cheese.com
ServerAlias cheese.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] #匹配到curl和baidu.com时会触发下面的规则 NC表示不区分大小写,OR表示或者,F:Forbidden
RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]
</IfModule>
CustomLog "logs/cheese.com-access_log" common
</VirtualHost>
6.2、重新加载和验证
/usr/local/apache2/bin/apachectl graceful
curl -A指定user_agent ,没有匹配到任何条件,