11.16/11.17 Apache默认虚拟主机
任何一个域名指向这台服务器,只要是没有对应的虚拟主机,就会由这个默认虚拟主机来处理。
我们先来编辑httpd的配置文件:
#vim /usr/local/apache2.4/conf/httpd.conf
搜索httpd-vhost,然后把这一行的注释#去掉。
然后再编辑虚拟主机配置文件:
#vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
将上图的内容修改为:
ServerAdmin指定管理员邮箱。DocumentRoot为该虚拟主机站点的根目录,网站的程序就放在这个目录下面。ServerName为网站的域名,ServerAlias为网站的第二域名,ServerAlias后面的域名可以写多个,用空格分开,但ServerName后面的域名不支持写多个。Errorlog为站点的错误日志,CustomLog为站点的访问日志。
假如在虚拟主机配置文件中,我们只定义了两个站点——abc.com和www.111.com,那么当第三个域名www.123.com指向本机的时候,当在浏览器访问www.123.com时,会去访问abc.com,也就是默认虚拟主机。
然后进行测试:
11.18 Apache用户认证
用户认证的功能就是在用户访问网站的时候,需要输入用户名密码才能顺利访问。一些比较重要的站点或者网站后台通常会加上用户认证,目的是保证安全。我们先来对111.com站点做一个全站的用户认证:
这样httpd的配置文件配置完成,但还需要创建密码文件,操作步骤如下:
配置完成后,需要到宿主机上去修改一下hosts文件(C:\Windows\System32\drivers\etc\hosts),把111.com域名指向你的这台Linux机器,这样才能通过浏览器访问到111.com:
在最下面增加一行:
IP地址 111.com
保存hosts文件后,就可以用Windows上的浏览器去访问111.com了,这会弹出一个用于认证的提示框:
输入用户名和密码后,将会进入111.com网站。上面的操作是针对整个站点做的认证,也可以针对某个目录或者某个文件进行认证,比如要对111.com/admin/目录进行认证,只需要修改一个地方,把<Directory /data/wwwroot/111.com>改为<Directory /data/wwwroot/111.com/admin/>。如果是一个文件,比如在111.com/admin/123.php,则需要这样做:
但这样会有一个问题,网址中带有admin.php的链接都会弹出谁窗口。
11.19/11.20 域名跳转
域名跳转的作用:一个站点有多个域名会对SEO有影响,就是对百度搜索关键词的排名有影响,如果把多个域名全部跳转到指定的一个域名,这样以这个域名为中心,就可以把权重集中在这个域名上,所以搜索关键词的排名也就先前了,还有,如果之前的某个域名不再使用了,但是搜索引擎还留着之前老域名的链接,这意味着用户可能会搜到我们的网站并且点击老的域名,所以需要把老域名做个跳转,跳到新域名,这样用户搜的时候,也可以访问到网站。
我们实现一个需求,把123.com域名跳转到111.com下,配置如下:
将上图内容修改为:
[root@zhangjin-120:/data/wwwroot/111.com]#/usr/local/apache2.4/bin/apachectl -t Syntax OK [root@zhangjin-120:/data/wwwroot/111.com]#/usr/local/apache2.4/bin/apachectl graceful [root@zhangjin-120:/data/wwwroot/111.com]#/usr/local/apache2.4/bin/apachectl -M |grep rewrite [root@zhangjin-120:/data/wwwroot/111.com]#vim /usr/local/apache2.4/conf/httpd.conf
开启rewrite模块:
然后进行测试:
11.21 Apache访问日志
访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题,比如有攻击时,是可以通过查看日志看到一些规律的。要配置httpd访问日志,首先要在主配置文件中定义访问日志的格式,打开主配置文件:
可以看到两个格式的日志,建议使用第一个,记录的信息会更全。%h为访问网站的IP;%l为远程登录名,这个字段基本上为“-”;%u为用户名,当使用用户认证时,这个字段为认证的用户名;%t为时间;%r为请求的动作(比如用curl -I时就为HEADE);%s为请求的状态码写成%>s为最后的状态码;%b为传输数据的大小;%{Referer}i为referer信息;%{User-Agent}i为浏览器的标识。
然后编辑文件#vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,更改文件内容如下图:
11.22 访问日志不记录静态文件
一个网站会有很多元素,尤其是图片、js、css等静态的文件进学多,用户每请求一个页面就会访问诸多的图片、js等静态元素,这些元素的请求都会被记录在日志中。如果一个站点访问量很大,那么访问日志文件增长会非常快,一天就可以达到几GB。这不仅对于服务器的磁盘空间造成影响,更重要的是会影响磁盘的读写速度。这些巨量的静态元素请求记录到日志里意义不大,所以可以限制这些静态元素去记录日志,并且需要把日志按天归档,一天一个日志,这样也可以防止单个日志文件过大。配置如下:
11.23 访问日志切割
日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除旧的日志文件。
我们打开虚拟主机配置文件:
将上图更改为:
11.24 静态元素过期时间
在httpd的配置文件中,我们是可以控制一个静态文件缓存时长的时间的,编辑虚拟主机配置文件,内容如下: