11.16/11.17 Apache默认虚拟主机
11.18 Apache用户认证
11.19/11.20 域名跳转
11.21 Apache访问日志
11.22 访问日志不记录静态文件
11.23 访问日志切割
11.24 静态元素过期时间
11.16/11.17 Apache默认虚拟主机
1,注意电脑上的路径为
C:\Windows\System32\drivers\etc ,hosts的文件
2,笔记本编辑hosts文件,记事本就可以打开,也可以常用notepadd+
保存,这时候从windows上去ping,发现,www.zhao.com指向到了192.168.101.3,也就是linux上
4. 编辑httpd.conf配置文件
vim /usr/local/apache2.4/conf/httpd.conf
找到关键字Virtual hosts,并且将下面的行注释去掉
5. 编辑虚拟主机配置文件 :
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改下对应的字段
DocumentRoot:定义网站根目录
ServerName:网站名称
ServerAlias:指定别名域名(可以有多个别名域名,同时指向一个ip,可以有多个域名)
ErrorLog:设定错误日志
CustomLog:设定访问日志
这里有两个virtualhost,一个是主服务器的域名,一个是备用服务器的配置,这里我们是用主用服务器的即可
注:一旦虚拟主机配置文件生效,则默认主机配置的文件定义的内容会失效
6,创建网站目录
[root@zhao ~]# mkdir /data/wwwroot/
[root@zhao ~]# mkdir /data/wwwroot/zhao.com/
[root@zhao ~]# mkdir /data/wwwroot/111.com/
7,创建index文件
vim /data/wwwroot/zhao.com/index.php
<?php
echo "abc.com";
然后检查语法错误
[root@zhao ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
vim /usr/local/apache2.4/conf/httpd.conf注意把http中的require打开
启动httpd
/usr/local/apache2.4/bin/apachectl start
最后使用curl -x 验证是否可用
curl -x //发送网络请求,-x选项为网络请求增加代理,相当于hosts的作用
curl -x192.168.101.3:80 zhao.com
Web访问为
第一个虚拟主机则是Apache服务的默认虚拟主机,无论访问哪个域名(其他虚拟主机定义的域名除外),只要指向了服务器的IP地址,都会跳转至默认虚拟主机。
11.18 Apache用户认证
[root@master ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/zhao.com"
ServerName zhao.com
ServerAlias www.example.com
<Directory /data/wwwroot/zhao.com> ##指定认证的目录
AllowOverride AuthConfig ##这个相当于打开认证的开关
AuthName "zhao.com user auth" ##自定义认证的名字,作用不大
AuthType Basic ##认证的类型,一般为Basic
AuthUserFile /data/.htpasswd ##指定密码文件所在位置
require valid-user ##指定需要认证的用户为全部可用用户
创建用户认证所需的用户和密码
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd lem
-c 创建密码 –m为md5的加密方式
/usr/local/apache2.4/bin/apachectl –t //重新加载
/usr/local/apache2.4/bin/apachectl graceful //重新加载
再次访问网页,则提示输入账户和密码了
11.19/11.20 域名跳转
配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[root@zhao ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
DocumentRoot "/data/wwwroot/zhao.com"
ServerName def.com
ServerAlias www.zhao.com www.123.com
<IfModule mod_rewrite.c> //需要mod_rewrite模块支持
RewriteEngine on //打开rewrite功能
RewriteCond %{HTTP_HOST} !^def.com$ //定义rewrite的条件,主机名(域名)不是www.123.com满足条件
RewriteRule ^/(.*)$ http://def.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行
</IfModule>
ErrorLog "logs/def.com-error_log"
CustomLog "logs/def.com-access_log" common
</VirtualHost>
R=301 永久重定向;R=302 临时重定向
检测Apache是否加载了rewrite模块
[root@zhao ~]# /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite
[root@zhao ~]# //输出为空,则说明Apache没有加载此模块//若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#
[root@zhao ~]# /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite
rewrite_module (shared) //再次检测,有相应输出,说明模块已加载
11.21 Apache访问日志
可以进入之前我们配置的日志文件中
日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common //默认格式
%h:来源IP
%l :用户
%u:用户名密码
%t:时间
%r:行为
%>s:状态码
%b:大小
%{Referer}:访问目标网址前所在的网址(比如,在猿课论坛上创建一个指向本地Apache服务的网址,那么在本地Apache的访问日志上的Referer一项就会显示猿课论坛的网址)
%{User-Agent}:用户代理,就是用户通过何种方式进行访问(curl,谷歌浏览器等)
修改日志格式
[root@zhao ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
CustomLog "logs/def.com-access_log" combined //将common改为combined
11.22 访问日志不记录静态文件
原因是因为很多图片一类的,可以选择不记录日志
例如编译文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
ErrorLog "logs/def.com-error_log"
SetEnvIf Request_URI ".*\.gif$" tupian //将图片格式设置为标签tupian
SetEnvIf Request_URI ".*\.jpg$" tupian //将图片格式设置为标签tupian
SetEnvIf Request_URI ".*\.png$" tupian //将图片格式设置为标签tupian
SetEnvIf Request_URI ".*\.bmp$" tupian //将图片格式设置为标签tupian
SetEnvIf Request_URI ".*\.swf$" tupian //将图片格式设置为标签tupian
SetEnvIf Request_URI ".*\.js$" tupian //将图片格式设置为标签tupian
SetEnvIf Request_URI ".*\.css$" tupian //将图片格式设置为标签tupian
CustomLog "logs/def.com-access_log" combined env=!tupian //访问日志记录排除带有标签为tupain的内容
11.23 访问日志切割
Apache服务自带日志切割工具
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!img
%Y年%m月%d日,86400代表一天,开启之后每日生成一个新的文件
11.24 静态元素过期时间
目的是为了把静态文件缓存在本地电脑中
配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<IfModule 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 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>
去掉注释
vim /usr/local/apache2.4/conf/httpd.conf
/usr/local/apache2.4/bin/apachectl -M |grep expires
这样代表模块开启啦~
依然重新开启加载
[root@zhao ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@zhao ~]# /usr/local/apache2.4/bin/apachectl graceful
扩展
apache虚拟主机开启php的短标签 http://ask.apelearn.com/question/5370
apache日志记录代理IP以及真实客户端IP http://ask.apelearn.com/question/960
apache只记录指定URI的日志 http://ask.apelearn.com/question/981
apache日志记录客户端请求的域名 http://ask.apelearn.com/question/1037
apache 日志切割问题 http://ask.apelearn.com/question/566