Apache配置(2)

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:\Windows\System32\drivers\etc\hosts,选择“记事本”或者“写字板"在最下面增加一行:

 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访问控制Diretory\FileMatch

 

进入/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

posted @ 2019-12-26 14:30  一个顶俩!  阅读(172)  评论(0编辑  收藏  举报