centos7.4 源码搭建LAMP___域名跳转、日志访问、静态元素过期时间、访问控制、user_agent

学习笔记

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>

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

2.1.1、验证和重新加载

/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

2.1.3、curl后查看日志

curl -x127.0.0.1:80 -I cheese.com
tail /usr/local/apache2/logs/cheese.com-access_log

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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 ,没有匹配到任何条件,

猜你喜欢

转载自blog.csdn.net/uuicon/article/details/89307036