apache 各种配置

//apache 的网站配置文件 /usr/local/apache2/conf/extra/httpd-vhosts.conf

-->在编辑这个文件前需要去httpd.conf把这个文件的注释去掉

<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.123.com

    #不记录指定文件的日志 --还要加上env
    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

#日志设置
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/aaa-error_%Y%m%d.log 86400"
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/aaa-access_%Y%m%d.log 86400"combined env=!image-request

#301跳转
<IfModule mod_rewrite.c>
     RewriteEngine on
     #进入下列网站     
     RewriteCond %{HTTP_HOST} ^www.tiaozhuan.com [OR]
     RewriteCond %{HTTP_HOST} ^www.test.com$
     #都跳转到www.123.com
     RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]

#禁止user_agent NC为不区分大小写 OR代表二者取一 全部都取就不要OR Rule为规则-F所有访问拒绝
     RewriteCond %(HTTP_USER_AGENT} ^Mozilla/5.* [NC]
     RewriteCond %(HTTP_USER_AGENT} ^.*chrome* [NC]
     RewriteRule .* - [F]

#限制某一个目录不让用户访问,也可利用deny和allow进行限制     
     RewriteCond %{REQUEST_URI} ^.*/tmp/.* [NC]
     RewriteRule .* - [F]
</IfModule>

#静态缓存
#1.mod_expires.c
 <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 hours"
    ExpiresByType application/x-javacript "now plus 2 hours"
    ExpiresByType application/javascript "now plus 2 hours"
    ExpiresByType application/x-shockwave-flash "now plus 2 hours"
    ExpiresDefault "now plus 2 hours"
    </IfModule>

#访问控制
<Directory /data/www/>
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
</Directory>

#针对请求的URI限制
#<filesmatch "(.*)admin(.*)">
#   Order deny,allow
#      Deny from all
#         Allow from 127.0.0.1
#         </filesmatch>

#全部PASS
#<Directory>
#Order deny,allow

#全部NOT PASS
#<Directory>
#Order allow,deny

#针对网站的用户上传的文件进行限制php解析
<Directory /data/www/data>
        php_admin_flag engine off
        <filesmatch "(.*)php">
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
        </filesmatch>
</Directory>

#防盗链
SetEnvIfNoCase Referer "^htt://.*aidu.com" local_ref
    SetEnvIfNoCase Referer "^htt://.*sohu.com" local_ref
    SetEnvIfNoCase Referer "^$"" local_ref
 <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif|png)">
    Order Allow,Deny
    Allow from env=local_ref
</filesmatch>
</VirtualHost>

#2.mod_headers
#<IfModule mod_headers.c>
    #htm,html,txt类的文件缓存 存放一个小时
    #   <filematch ".(htmlhtm|txt)$">
    #header set cache-control "max-age=3600"
    # </filematch>

写配置文件会遇到的错误 :

1.

/usr/local/apache2/bin/apachectl -t
Syntax error on line 34 of /usr/local/apache2/conf/extra/httpd-vhosts.conf:
AuthUserFile takes 1-2 arguments, text file containing user IDs and passwords

1.因为 多出了 AllowOverride AuthConfig 

2. 34行有中文注释,将其删除即可

==================我是分割线。===============

配置后的测试 :

//用户认证的测试 

对某一个网页进行 用户认证 的设置 

/data/.htpasswd 是存放网页用户名和密码的文件 

需要用htpasswd -c 选项进行首次创建文件

[root@localhost ~]# htpasswd -mbc .htpasswd Neo 111111

//创建用户名为Neo,密码为111111的帐户
然后 apachectl
-t apachectl graceful 然后去浏览器访问被限定的文件夹 ====================== //默认主机 --如果不配置 ,只要在电脑的hosts配置了另外的域名 也可以访问到指定的ip 添加了默认主机 就可以进行限制 只有我们配置的域名才可访问到本服务器的ip 测试: 先在 hosts 服务器的ip里 配置多一个不属于我们配置文件里的域名 如 www.aaa.com 然后在浏览器里 访问域名 www.aaa.com 可以跳转到我们的网站 然后我们配置虚拟主机 再去访问 www.aaa.com 就已经不行了 --则配置完成 ======================= //域名跳转 配置好后 用浏览器直接访问配置的域名 测试 或者用curl来进行测试 curl -x+本机ip+port +域名 -I ====================== //日志切割 对网站进行刷新 根据配置日志的路径 然后从centos看文件夹里是不是出现了日志 ====================== //不记录指定文件的日志 先对已存在的日志 进行清空 然后刷新网页 再去查看日志 是不是还存在那些指定文件的日志 ======================= //静态缓存 配置好后 到浏览器中 对某个已经配置的文件右键 或F12 查看文件的路径 然后在Linux中用curl 来访问 例如 curl -x127.0.0.1:80 'http://www.test.com/static/image/common/logo.png' -I 从cache-control这一栏就可以知道 ,是否已经配置好 是否与我们配置的时间一致 ====================== //防盗链 配置好后, 再去以白名单 和黑名单的身份去访问被限制的文件类型 看是否白名单显示 黑名单则不可以显示
原文地址:https://www.cnblogs.com/frankielf0921/p/5374229.html