2.1默认虚拟主机
2.1.1介绍
任何一个城名指向这台服务器,只要是没有对应的虚拟主机,就会由这个默认虚拟主机来处理
2.1.2配置
编辑配置文件httpd,conf
编辑虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
2.1.3配置验证
Mkdir -p /data/wwwroot/aming.com /data/wwwroot/www.666.com
2.2用户认证
配置/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑666.com虚拟主机:
配置完成后,创建密码文件
/usr/local/apache2.4/bin/htpasswd -cm /data/ .htpasswd aming
(htpasswd命令为创建用户的工具,-c为create (创建) ,-m指定密码加密方式为MD5,
/data/ .htpasswd为密码文件,aming为要创建的用户。第一次执行该命令需要加-c,
第二次再创建新的用户时,就不用加一C了,否则/data/.htpasswd文件会被重置,之前的用户被清空)
2.2.2配置验证
配置完成后,需要到文件路径为C:WindowsSystem32driversetchosts,选择“记事本”或者“写字板"在最下面增加一行:
192.168.200.142 www. 666. com
systemctl stop firewalld(关闭防火墙)
2.3域名跳转
配置/usr/local/apache2.4/conf/extra/httpd-vhosts.con
实现域名跳转,需要有rewrite模块支持,所以先查看httpd是否已经加载该模块
/usr/local/apache2.4/bin/apachectl –M|grep –i rewrite 如果没有任何输出需要编辑配置文件
Vim /usr/local/apache2.4/conf/httpd.conf 搜索rewrite,把首行#删除
/usr/local/apache2.4/bin/apachectl graceful
再次执行第一步
测试
2.4访问日志
访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题,比如当有攻击时,是可以通过查看日志看到一些规律的
配置httpd访问日志,首先要在主配置文件中定义访问日志的格式,打开主配置文件:
Vim /usr/local/apache2.4/conf/httpd.conf 搜索LogFormat
建议使用第一个日志,因为记录的信息更全
%h为访问网站的IP;
%l为远程登录名,这个字段基本上为“-";
%u为用户名,当使用用户认证时,这个字段为认证的用户名;
%t为时间;
%r为请求的动作(比如用curl -I时就为HEADE );
%s为请求的状态码,写成%>s为最后的状态码;
%b为传输数据大小;
再次进入/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑虚拟主机
再次进入/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑虚拟主机
(先定义了一个image-request环境变量,把gif、 jpg、png、bmp、 swf、 js、css等格式的文件全部归类到image . request里,后面的env=!image-request有用到一个“!”,这相当于取反了,意思是把Image-request以外的类型文件记录到日志里)
2.5访问日记不记录静态文件
2.6访问日记切割
rotatelogs命令:这个rotetelogs为httpd自带切割日志的工具,它会把访问日志按定义的文件名格式进行切割,其中86400单位是“秒”,相当于“一天”
2.7静态元素过期时间
再次进入/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑虚拟主机
再次验证重启
检查Thttpd是否加载expires模块:
/usr/local/apache2.4/bin/apachectl -M|grep -i expires
如果没有任何输出,说明当前httpd并不支持expires模块,需要修改配置文件,
打开该模块
vim /usr/local/apache2.4/conf/httpd.conf 搜索expires找到LoadModule expires_ module modules/mod_ expires .so把首行#删除,之后再次重启,输入下图命令
测试
2.8配置防盗链
进入/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑虚拟主机配置文件
定义允许访问链接的referer,其中^$为空referer,当直接在浏览器里输人图片地址去访问时,它的referer就为空,使用filesmatch来定义需要保护的文件类型,访问txt. doc . mp3.zip、rar、jpg、gif格式的文件,当访问这样类型的文件时就会被限制
再次验证重启
2.9访问控制Diretory
对于一些比较重要的网站内容,除了可以使用用户认证限制访问之外,还可以通过其他一些方法做到限制,如可以限制IP,也可以限制user_ agent,限制IP指的是限制访问网站的来源IP,而限制user_ agent,用来限制恶意或者不正常的请求。
进入/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑配置文件
使用<Directory>来指定要限制访问的目录,order定义控制顺序,哪个在前面就先匹配哪个规则。下图中deny在前面,所以先匹配Deny fromall这样所有的来源IP都会被限制,然后匹配Allow from127.0.0.1,这样又允许了127.0.0.1这个IP。最终的效果是,只允许来源IP为127.0.0.1的访问
<Directory /data/wwwroot/www.665.com/download>
再次验证重启
2.10访问控制DiretoryFileMatch
进入/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑配置文件
2.11限制某个目录禁止解析PHP
进入/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑配置文件
再次验证重启
遇到问题
解决办法:删除文件upload,创建目录upload
2.12限制user_agent
进入/usr/local/apache2.4/conf/extra/httpd-vhosts.conf编辑配置文件
再次验证重启
curl的-A选项指定user_agent,
第一个请求,user_agent为“curl/7.29.0" 匹配了第一个条件,所以会403;
第二个请求,user_agent为自定 义的“123123” 没有匹配任何条件,所以状态码为200