//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这一栏就可以知道 ,是否已经配置好 是否与我们配置的时间一致 ====================== //防盗链 配置好后, 再去以白名单 和黑名单的身份去访问被限制的文件类型 看是否白名单显示 黑名单则不可以显示