任务
11.16/11.17 Apache默认虚拟主机
11.18 Apache用户认证
11.19/11.20 域名跳转
11.21 Apache访问日志
11.22 访问日志不记录静态文件
11.23 访问日志切割
11.24 静态元素过期时间
预习笔记
Apache默认虚拟主机
一台服务器可以访问多个网站,每个网站都是一个虚拟主机 概念:域名(主机名)、DNS、解析域名、hosts 任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
1.配置windows下的hosts文件
文件路径C:\Windows\System32\drivers\etc\hosts
2.添加域名
3.ping配置的域名是否生效
4.使用浏览器访问
** linux下配置虚拟主机**
1.编辑配置文件httpd.conf,去掉Virtual hosts下面一行的#号,使虚拟主机的配置文件生效
vim /usr/local/apache2.4/conf/httpd.conf
2.修改虚拟主机配置文件
<VirtualHost *:80>
DocumentRoot “/data/wwwroot/abc.com” \定义网站根目录
ServerName abc.com \定义域名,只能一个
ServerAlias www.abc.com www.123.com \定义域名别名,可以多个
ErrorLog “logs/abc.com-error_log” \定义错误日志
CustomLog “logs/abc.com-access_log” common \定义访问日志
<VirtualHost *:80>
DocumentRoot “/data/wwwroot/111.com” \定义网站根目录
ServerName 111.com \定义域名,只能一个
ServerAlias www.example.com \定义域名别名,可以多个
ErrorLog “logs/111.com-error_log” \定义错误日志
CustomLog “logs/111.com-access_log” common \定义访问日志
- 创建和虚拟主机对应的站点根目录,创建对应的index.php
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
4.用curl -x192.168.190.101:80 abc.com 来测试
Apache用户认证
- 全局用户认证
修改虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "111.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>
2.使用htpasswd创建密码
htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。
再次增加用户时,不需要使用-c选项,如果使用将会覆盖之前生成的文件
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置扫描二维码关注公众号,回复: 6649590 查看本文章
3.使用curl连接,提示401错误
curl -I(大写i)/参数 仅返回头部信息
curl命令的 -u 参数,使用用户名,密码连接
状态码为200,表示连接成功
输入错误的密码
状态码为401,无法连接
在windows上测试,在hosts文件中添加对应的域名
连接提示输入用户名密码
输入用户名密码登陆成功
2. 单个文件进行认证
修改虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
# <Directory /data/wwwroot/111.com>
/注释掉
<FilesMatch 123.php>
/当访问123.php时才需要认证
AllowOverride AuthConfig
AuthName "111.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
# </Directory>
/注释掉
创建123.php
vim /data/wwwroot/111.com/123.php
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
访问111.com成功
访问111.com/123.php提示被拒绝
输入用户名密码访问111.com/123.php,提示访问成功
域名跳转
配置域名跳转
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<IfModule mod_rewrite.c>
RewriteEngine on
\打开rewrite功能
RewriteCond %{HTTP_HOST} !^111.com$
\定义rewrite条件,当域名不是111.com的时候,进行跳转
RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
\当满足条件时执行的规则,301表示永久跳转,L表示跳转一次
</IfModule>
修改配置文件/httpd.conf ,加载rewrite模块
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
跳转成功
Apache访问日志
1.日志存放位置
/usr/local/apache2.4/logs/
2.日志格式
vim /usr/local/apache2.4/conf/httpd.conf
虚拟主机配置中日志使用的格式为common
3.更改日志格式
将日志默认格式修改为combined
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
查看生成的日志文件
访问日志不记录静态文件
很多网站大多为静态网页,网页内部的图片、css文件等同样有其网址链接,如果不设置,这些无效的信息也将被存入访问日志中,会导致访问日志文件大小快速增加,占用大量存储空间。我们可以通过设置不记录某些文件来减少无效信息,节省内存资源。
在未修改前,我们访问网页的图片,会被日志记录
修改配置文件
ErrorLog "logs/111.com-error_log"
SetEnvIf Request_URI ".*\.gif$" img
SetEnvIf Request_URI ".*\.jpg$" img
SetEnvIf Request_URI ".*\.png$" img
SetEnvIf Request_URI ".*\.bmp$" img
SetEnvIf Request_URI ".*\.swf$" img
SetEnvIf Request_URI ".*\.js$" img
SetEnvIf Request_URI ".*\.css$" img
//将图片都定义为img
CustomLog "logs/111.com-access_log" combined env=!img
//不记录关于变量img的请求日志
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
查看生成的日志文件,日志中不再记录对应的访问记录
访问日志切割
对配置文件进行修改
CustomLog “|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d_log 86400” combined env=!img
语句释义:
/usr/local/apache2.4/bin/rotatelogs工具是apache自带的分割日志的工具
-l(小写L)参数按当前系统时间为基准进行切割(中国为CST),默认UTC(美国时间)
%Y%m%d表示年月日,这样会每天记录一个带日期的日志文件
`86400(s)表示每天都进行切割,24小时等于86400秒``
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
查看生成日志的情况
静态元素过期时间
修改主配置文件,去掉expires_module模块前#号
在虚拟配置文件中增加配置
<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>
释义
acess 表示从访问时间开始
now 表示按当前时间开始
plus 在前面的时间基础上加上
1 hours/days 表示文件的生命周期
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
课堂笔记
下载apr-1.6、apr-util-1.6以及httpd-2.4,分别解压三个源码包
把apr-1.6.3 放到httpd源码包的/srclib/下,改名apr
把apr-util-1.6.1 放到httpd源码包的/srclib/下,改名apr-util4)编译参数./configure --prefix=/dir/ --enable-so --enable-mpms-shared=all --with-mpm=event --enable-mods-shared=most --with-included-apr
说明:这里的/dir/为apache安装路径,根据需求定目录
apache的一些学习文档: https://github.com/aminglinux/apache