Web学习之——03Apache服务器的高级配置(虚拟主机、status)
2015-09-30 21:20
1136 查看
Apache服务的配置分为三个阶段:
1、 全局配置(theglobal environment):对主服务器或虚拟机都有效,且有些功能是服务器自身属性;
2、 主服务器(mainserver):主站属性;
3、 虚拟主机(VirtualHosts):虚拟主机及属性定义;
本次实验讨论第三阶段:虚拟主机;
httpd的虚拟主机;
httpd的statues
curl命令的使用
httpd的压缩功能
=======================================================
一、httpd的虚拟主机:
1、 什么是虚拟主机:
虚拟主机是在同一台主机中搭建基于不同主机名、端口号及基于不同IP的多个网站服务的技术,可以为运行在同一物理机器上的各个网站指配不同的IP和端口,也可让多个网站拥有不同的主机名;虚拟主机的类型:一共有三种类型的虚拟主机: 基于端口虚拟主机:一个IP、一个主机名对应多个端口; 基于IP虚拟主机:一个主机名、同一个端口对应多个IP地址; 基于主机名(FQDN)的虚拟主机:一个IP地址、一个端口对应多个主机名;【实验环境】 一台CentOS6.6虚拟机作为web服务器兼DNS服务器,一台windows 8.1的物理机做客户端,规划如下:域名:webtest.com 172.16.21.9 CentOS6.6DNS: ns1.webtest.com 172.16.21.9 CentOS6.6Web: httpd.webtest.com(别名:apache.webtest.com) 172.16.21.9 CentOS6.6Win8.1客户端:172.16.21.1 DNS指向 172.16.21.92、 DNS和Apache2.2的基本配置:
1) 在172.16.21.9的CentOS虚拟机上安装并配置好DNS服务,配置文件的内容如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/14126c23cca1f790c9b72ad3dfa742d4.jpg)
区域解析文件webtest.com.zone的配置内容如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/590aa50d47b853835eb71bf18c464593.jpg)
关于DNS的配置,请参考前面有关DNS的配置文章;2) 在172.16.21.9的CentOS虚拟机上通过yum安装好httpd2.2,做好基本配置并在DocumentRoot目录下创建好默认的index.html文件。
3) 在Win8.1主机上配置好网络,特别注意将DNS指向我们配置好的DNS服务器(172.16.21.9);
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/b22c45af1b94f56fe876e96ae1ef8b37.jpg)
4) 在Win8.1客户端的浏览器中输入相应网址测试两台web服务器及DNS配置结果;直接输入Apache服务器的IP地址的访问结果;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/71d21f102b8d65f423b30a538ccf8dfd.jpg)
输入域名的访问结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/a5479a040f92c05e42bb7c3aa29f3925.jpg)
上面的网址即为我们DNS里设置的web服务器的主机A记录,因此可以看到DNS和Web都已经工作正常了哈。
3、 配置虚拟主机:
配置虚拟主机的前提条件:
虚拟主机与主服务器不能并存,因此需要先关闭主服务器,即找到主服务器端的DocumentRoot,将其注释掉:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/ecd30c88889eafd62fd56d7ea8fd0106.jpg)
(1) 在Apache2.2上面配置如下所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/1cae5b06a4fbdf6aae94741379eef000.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/13327fa1c10db710db95b5f79bee557d.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/fe35d3b2416fffd71568b44bf1e30c8c.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/493d3d075d114f266778bd2f1646f745.jpg)
说明:基于端口号的虚拟主机配置在生产环境中用的不多,因为客户端访问web服务器默认用的都是80端口,客户端并不知道服务器所配置的端口是什么。
C、配置基于IP的虚拟主机:
1、 在Apache2.2上的配置如下:
(1) 为当前虚拟机添加一个地址,IP的配置结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/56ebd7bd82890c0ee8126e1de0b27137.jpg)
保存退出,并重新加载DNS的配置文件和区域解析文件;(3) 编辑httpd.conf,找到虚拟主机配置段做如下配置:
(4) 修改/website/host1/index.html和/website/host2/index.html,内容如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/0d545a289fdd4cfa37f6ffc7e830ba26.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/eaafe4ed9621719df8f44c47a1424ae5.jpg)
可以看到,因为DNS轮巡的结果,我们事先了基于IP的虚拟主机;说明: 基于IP的虚拟主机配置在生产环境中用的也不多,因为公网IP日益短缺并且每分配一个公网IP接意味着多支付一笔昂贵的费用哈。 基于IP的虚拟主机是通过DNS的轮巡机制来实现的。D. 配置基于主机名(FQDN)的虚拟主机:
正是因为上面2中虚拟主机不常用,因此有了第三种虚拟主机;基于主机名的虚拟主机;1、原理:
思考一个问题:我们在浏览器中输入域名访问网站,最终结果是域名被DNS解析成了IP地址,主机和主机之间只能通过IP来通信。如此不同的主机名对应同一个IP如何实现?【答】:基于主机名(多个主机名对应一个IP)的虚拟主机,是通过HTTP协议中请求报文首部的Host属性来实现的哈,因此也被称作基于主机头的虚拟主机。如图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/ffa27ffb50adc9f1153f1de77aa96e6b.jpg)
2、 配置步骤:
(1) 编辑httpd.conf,找到虚拟主机配置段做如下配置:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/10479c0531ed2624f6de23fdc2450f11.jpg)
说明:NameVirtualHost指令只用在Apache2.2及其以前的版本中,Apache2.4以后的版本就不需要该指令了。(2) 创建网站目录并提供默认主页面文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/056d425c9cbcdbe7ce534a43db2a0bad.jpg)
(3) 在DNS的区域解析库文件/var/named/webtest.com.zone中修改主机记录文件,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/a7cf638d896303c93a43c84aea2d73dc.jpg)
(4) 重启DNS服务和httpd服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/a03398dd21bc25fe133b09a890162542.jpg)
(5) 在windows客户端的浏览器中测试结果:
查看访问httpd.webtest.com的结果(用开发者工具(F12)查看消息头信息):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/4fa18b20f0995cedd0f07e4447217e74.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/2e7107c6f09f1c7ea8fd22b3130de450.jpg)
说明:1、基于主机名(FQDN)的虚拟主机是用的最多的一种虚拟主机。2、对于Apache2.2及其以前的版本,基于主机名的虚拟主机的定义需要通过NameVirtualHost指令来定义,Apache2.4以后的版本则不需要。3、基于主机名的虚拟主机是通过HTTP协议请求报文首部的Host属性来实现的,故而也称为基于主机头的虚拟主机E. 配置混合类型的虚拟主机:
以上三种虚拟主机可以混合使用,具体过程如下:(1) 定义监听端口:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/e0a81041efcf9751130cf9060157d42e.jpg)
(2) 定义虚拟主机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/413ba7a146cae9439e166a01b8f3beb4.jpg)
(3) 创建不同虚拟主机的完整根目录及默认页面:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/8690ca893e0f5220115818e8d5186b0f.jpg)
(4) 修改DNS的区域解析文件/var/named/webtest.com.zone:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/fe31c2bfdc78e428b24ac24c2f68d33d.jpg)
(5) 重启DNS服务和httpd服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/392446b3ef3e601422a3819a9fa13b3b.jpg)
(6) 在windows客户端的浏览器中测试结果:
基于主机名的虚拟机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/d78ded7136c0553f0df2ba449c4a0018.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/03d420b0e86fb000a2e73f26e71a0f15.jpg)
基于IP的虚拟主机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/00702b0859ff1e188f8b1f16c270c0f6.jpg)
基于端口号的虚拟主机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/fadf55ffb340331d9c5b6c2567553a56.jpg)
F.为基于端口号的虚拟主机配置基于组的访问控制:
每个虚拟准基的配置互不影响,可以单独为指定的虚拟主机配置诸如日志、用户访问控制等属性。下面就以基于端口号的虚拟主机为例,为其配置基于组的访问控制:(1) 修改httpd.conf配置文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/0ab9f9f9872b0f1da3d121e5f46cb197.jpg)
(2) 创建用户认证文件:
(5) 在windows客户端主机上通过浏览器测试结果:
WinXP:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/fbd277fb398462fdef046969bdf5162b.jpg)
提供用户名和密码后就可以访问了:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/e3762efeca337cfb14ca81cf8541dd0a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/d5d44b84c0adb760ce4db65668da639d.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/61f457c78205a24ed6e340954b23111f.jpg)
二、httpd的status(服务器状态信息):
开启原则:status在需要时才开启,就算需要开启,也尽量以最少的信息输出为原则(因为开启status会影响服务器性能;)
开启方法:通过status_module模块允许Apache服务器生成状态报告;
1、 查看当前Apache服务器是否启用了mod_status模块;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/e3a510de2422c8e2136f450b2f43254c.jpg)
2、 status是通过容器类指令<Location /server-status></Location>来定义的,具体如下所示:
(1) 编辑httpd.conf文件,启用status_module模块(默认就是启用的,但最好确认一下):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/6b19c205fe75e2f35031e435c8da2b14.jpg)
(2) 找到<Loacation /server-status>,取消注释:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/d67e72c57de617579b6e6c2830b7ce5d.jpg)
(3) 保存退出后重读配置文件:service httpd reload
(4) 在windows客户端的浏览器中访问/server-status:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/ccd2087f9c6e0e6e1cdf7c54a0815be3.jpg)
(5) 开启ExtendedStatus以查看更为详细的status信息:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/f9a3fab8f47167e04f976ab64383ba28.jpg)
(6) 保存退出并重读httpd配置文件,然后在windows客户端浏览器再次访问server-status页面:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/b17e5cf6382ff0778b3da2bb5569196d.jpg)
说明:1、服务器的status会影响服务器的性能,如果没有必要建议关闭。就算需要开启,也尽量让其输出最基本的信息;
2、服务器的status信息一般不允许所有用户查看,因此建议设置用户访问控制;
三、Curl命令的使用:
curl是基于URL语法在命令行模式下工作的文件传输工具,它支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法,FTP上传,kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http代理服务器管道(proxy tunneling),甚至还支持IPv6,socks5代理服务器,通过http代理服务器上传文件到FTP服务器等等,功能十分强大(类似于迅雷,但curl还是一个基于命令行的浏览器)。
1、只显示响应报文首部信息:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/7a0728c62a177e698f5d2d2115ef7008.jpg)
2、模拟Referer(从某个页面跳转过来):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/da5a17bda418e4bbc8efb02acc3e6487.jpg)
四、httpd支持压缩功能:
使用deflate_module模块可以压缩页面以优化网络传输速度:
【httpd配置的注意点】;
1、 指令的分类:指令与容器类指令:
首字母大写,形如ServerRoot “ ”被称为指令;用一对尖括号括起来,形如:<Directory “FS_PATH”></Directory>被称为容器类指令2、 指令的继承性:
httpd的指令是由继承性的,例如我们先定义了一个<Directory>容器类指令,如下所示:
==========================================================今天就学习到这里吧,上面所写只是我学习过程当中的一些,一些,笔记吧,难免出现错误,或者表述不正确的地方,请见谅!
============================================================
本文出自 “佧拉贵银's Blog” 博客,请务必保留此出处http://kalaguiyin.blog.51cto.com/4831716/1699669
1、 全局配置(theglobal environment):对主服务器或虚拟机都有效,且有些功能是服务器自身属性;
2、 主服务器(mainserver):主站属性;
3、 虚拟主机(VirtualHosts):虚拟主机及属性定义;
本次实验讨论第三阶段:虚拟主机;
httpd的虚拟主机;
httpd的statues
curl命令的使用
httpd的压缩功能
=======================================================
一、httpd的虚拟主机:
1、 什么是虚拟主机:
虚拟主机是在同一台主机中搭建基于不同主机名、端口号及基于不同IP的多个网站服务的技术,可以为运行在同一物理机器上的各个网站指配不同的IP和端口,也可让多个网站拥有不同的主机名;虚拟主机的类型:一共有三种类型的虚拟主机: 基于端口虚拟主机:一个IP、一个主机名对应多个端口; 基于IP虚拟主机:一个主机名、同一个端口对应多个IP地址; 基于主机名(FQDN)的虚拟主机:一个IP地址、一个端口对应多个主机名;【实验环境】 一台CentOS6.6虚拟机作为web服务器兼DNS服务器,一台windows 8.1的物理机做客户端,规划如下:域名:webtest.com 172.16.21.9 CentOS6.6DNS: ns1.webtest.com 172.16.21.9 CentOS6.6Web: httpd.webtest.com(别名:apache.webtest.com) 172.16.21.9 CentOS6.6Win8.1客户端:172.16.21.1 DNS指向 172.16.21.92、 DNS和Apache2.2的基本配置:
1) 在172.16.21.9的CentOS虚拟机上安装并配置好DNS服务,配置文件的内容如下图所示:
[root@centos ~]# yum install -y bindbind-chroot bind-utils [root@centos ~]# vim /etc/named.conf
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/14126c23cca1f790c9b72ad3dfa742d4.jpg)
区域解析文件webtest.com.zone的配置内容如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/590aa50d47b853835eb71bf18c464593.jpg)
关于DNS的配置,请参考前面有关DNS的配置文章;2) 在172.16.21.9的CentOS虚拟机上通过yum安装好httpd2.2,做好基本配置并在DocumentRoot目录下创建好默认的index.html文件。
[root@centos ~]# yum install httpd –y DocumentRoot "/var/www/html" [root@centos ~]# cat/var/www/html/index.html
<html> <head> <metacharset="UTF-8"> <title>kalaguiyin测试</title> </head> <body> <h2>欢迎访问,这是测试主页</h2> <marquee>http://kalaguiyin.51cto.com<marquee> </body> </html>
3) 在Win8.1主机上配置好网络,特别注意将DNS指向我们配置好的DNS服务器(172.16.21.9);
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/b22c45af1b94f56fe876e96ae1ef8b37.jpg)
4) 在Win8.1客户端的浏览器中输入相应网址测试两台web服务器及DNS配置结果;直接输入Apache服务器的IP地址的访问结果;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/71d21f102b8d65f423b30a538ccf8dfd.jpg)
输入域名的访问结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/a5479a040f92c05e42bb7c3aa29f3925.jpg)
上面的网址即为我们DNS里设置的web服务器的主机A记录,因此可以看到DNS和Web都已经工作正常了哈。
3、 配置虚拟主机:
配置虚拟主机的前提条件:
虚拟主机与主服务器不能并存,因此需要先关闭主服务器,即找到主服务器端的DocumentRoot,将其注释掉:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/ecd30c88889eafd62fd56d7ea8fd0106.jpg)
然后用一个容器类指令来定义虚拟主机: <VirtualHost IP:PORT> ServerName DocumentRoot "" </VirutalHost> #说明:ServerName和DocumentRoot就是一个虚拟主机最基本的两个配置,但可以为每个虚拟主机定义更多的属性:日志、用户访问控制等等配置基于虚拟端口的虚拟主机:
(1) 在Apache2.2上面配置如下所示:
#(1)找到httpd.conf文件中虚拟主机段,做如下配置: <VirtualHost *:80> ServerName www.80.com #不是根据主机名来定义,因此此处可任意写 DocumentRoot "/website/host1" #80端口的虚拟主机网站根目录设置为此处 </VirtualHost> <VirtualHost *:8080> ServerName www.8080.com DocumentRoot "/website/host2" #8080端口的虚拟主机网站根目录设置为此处 </VirtualHost>
#(2)配置监听端口(同时监听80、8080端口): Listen 80 Listen 8080
#(3)保存退出并检查语法: [root@Centos ~]# httpd -t Warning: DocumentRoot [/website/host1] does not exist #网站根目录不存在啊,创建即可 Warning: DocumentRoot [/website/host2] does not exist Syntax OK
#(4)创建网站根目录: [root@centos named]# mkdir -pv/website/host{1,2} mkdir: created directory `/website' mkdir: created directory `/website/host1' mkdir: created directory `/website/host2' [root@centos named]# httpd -t Syntax OK
#(5)在上面创建的host1、host2目录下创建默认主页面:[root@Centos ~]# vim /website/host1/index.html <h1>www.80.com</h1> [root@Centos ~]# vim /website/host2/index.html <h3>www.8080.com</h3>
#(6)重新启动httpd服务(因为改动了端口号) [root@Centos ~]# service httpd restart在客户端浏览器中验证配置:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/1cae5b06a4fbdf6aae94741379eef000.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/13327fa1c10db710db95b5f79bee557d.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/fe35d3b2416fffd71568b44bf1e30c8c.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/493d3d075d114f266778bd2f1646f745.jpg)
说明:基于端口号的虚拟主机配置在生产环境中用的不多,因为客户端访问web服务器默认用的都是80端口,客户端并不知道服务器所配置的端口是什么。
C、配置基于IP的虚拟主机:
1、 在Apache2.2上的配置如下:
(1) 为当前虚拟机添加一个地址,IP的配置结果如下:
[root@centos named]# ifconfig eth1:1172.16.21.15 netmask 255.255.255.0 up [root@centos named]# ifconfig eth1 Link encap:Ethernet HWaddr00:0C:29:6B:87:DD inet addr:172.16.21.9 Bcast:172.16.21.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe6b:87dd/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:20878 errors:0 dropped:0 overruns:0 frame:0 TX packets:11524 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1798478 (1.7 MiB) TXbytes:1346141 (1.2 MiB) eth1:1 Link encap:Ethernet HWaddr00:0C:29:6B:87:DD inet addr:172.16.21.15 Bcast:172.16.21.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1(2) 在/var/named/webtest.com.zone区域解析文件中添加一条主机A记录:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/56ebd7bd82890c0ee8126e1de0b27137.jpg)
保存退出,并重新加载DNS的配置文件和区域解析文件;(3) 编辑httpd.conf,找到虚拟主机配置段做如下配置:
<VirtualHost172.16.21.9:80> ServerName www.a.com DocumentRoot "/website/host1" </VirtualHost> <VirtualHost172.16.21.15:80> ServerName www.b.org DocumentRoot "/website/host2" </VirtualHost>
(4) 修改/website/host1/index.html和/website/host2/index.html,内容如下:
[root@centos named]# cat/website/host1/index.html <h1>www.a.com</h1> [root@centos named]# cat/website/host2/index.html <h3>www.b.org</h3>(5) 重启httpd服务并在windows客户端的浏览器中进行访问测试:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/0d545a289fdd4cfa37f6ffc7e830ba26.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/eaafe4ed9621719df8f44c47a1424ae5.jpg)
可以看到,因为DNS轮巡的结果,我们事先了基于IP的虚拟主机;说明: 基于IP的虚拟主机配置在生产环境中用的也不多,因为公网IP日益短缺并且每分配一个公网IP接意味着多支付一笔昂贵的费用哈。 基于IP的虚拟主机是通过DNS的轮巡机制来实现的。D. 配置基于主机名(FQDN)的虚拟主机:
正是因为上面2中虚拟主机不常用,因此有了第三种虚拟主机;基于主机名的虚拟主机;1、原理:
思考一个问题:我们在浏览器中输入域名访问网站,最终结果是域名被DNS解析成了IP地址,主机和主机之间只能通过IP来通信。如此不同的主机名对应同一个IP如何实现?【答】:基于主机名(多个主机名对应一个IP)的虚拟主机,是通过HTTP协议中请求报文首部的Host属性来实现的哈,因此也被称作基于主机头的虚拟主机。如图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/ffa27ffb50adc9f1153f1de77aa96e6b.jpg)
2、 配置步骤:
(1) 编辑httpd.conf,找到虚拟主机配置段做如下配置:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/10479c0531ed2624f6de23fdc2450f11.jpg)
说明:NameVirtualHost指令只用在Apache2.2及其以前的版本中,Apache2.4以后的版本就不需要该指令了。(2) 创建网站目录并提供默认主页面文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/056d425c9cbcdbe7ce534a43db2a0bad.jpg)
(3) 在DNS的区域解析库文件/var/named/webtest.com.zone中修改主机记录文件,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/a7cf638d896303c93a43c84aea2d73dc.jpg)
(4) 重启DNS服务和httpd服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/a03398dd21bc25fe133b09a890162542.jpg)
(5) 在windows客户端的浏览器中测试结果:
查看访问httpd.webtest.com的结果(用开发者工具(F12)查看消息头信息):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/4fa18b20f0995cedd0f07e4447217e74.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/2e7107c6f09f1c7ea8fd22b3130de450.jpg)
说明:1、基于主机名(FQDN)的虚拟主机是用的最多的一种虚拟主机。2、对于Apache2.2及其以前的版本,基于主机名的虚拟主机的定义需要通过NameVirtualHost指令来定义,Apache2.4以后的版本则不需要。3、基于主机名的虚拟主机是通过HTTP协议请求报文首部的Host属性来实现的,故而也称为基于主机头的虚拟主机E. 配置混合类型的虚拟主机:
以上三种虚拟主机可以混合使用,具体过程如下:(1) 定义监听端口:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/e0a81041efcf9751130cf9060157d42e.jpg)
(2) 定义虚拟主机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/413ba7a146cae9439e166a01b8f3beb4.jpg)
(3) 创建不同虚拟主机的完整根目录及默认页面:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/8690ca893e0f5220115818e8d5186b0f.jpg)
(4) 修改DNS的区域解析文件/var/named/webtest.com.zone:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/fe31c2bfdc78e428b24ac24c2f68d33d.jpg)
(5) 重启DNS服务和httpd服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/392446b3ef3e601422a3819a9fa13b3b.jpg)
(6) 在windows客户端的浏览器中测试结果:
基于主机名的虚拟机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/d78ded7136c0553f0df2ba449c4a0018.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/03d420b0e86fb000a2e73f26e71a0f15.jpg)
基于IP的虚拟主机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/00702b0859ff1e188f8b1f16c270c0f6.jpg)
基于端口号的虚拟主机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/fadf55ffb340331d9c5b6c2567553a56.jpg)
F.为基于端口号的虚拟主机配置基于组的访问控制:
每个虚拟准基的配置互不影响,可以单独为指定的虚拟主机配置诸如日志、用户访问控制等属性。下面就以基于端口号的虚拟主机为例,为其配置基于组的访问控制:(1) 修改httpd.conf配置文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/0ab9f9f9872b0f1da3d121e5f46cb197.jpg)
(2) 创建用户认证文件:
[root@localhost /]# htpasswd -cm/etc/httpd/conf/.htpass Tom New password: Re-type new password: Adding password for user Tom [root@localhost /]# htpasswd -m/etc/httpd/conf/.htpass Johnson New password: Re-type new password: Adding password for user Johnson(3) 创建组文件/website/vhost_PORT/.htgroup:
[root@localhost /]# vim/website/vhost_PORT/.htgroup [root@localhost /]# cat/website/vhost_PORT/.htgroup Employees:Tom Johnson(4) 重读httpd配置文件:service httpd reload
(5) 在windows客户端主机上通过浏览器测试结果:
WinXP:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/fbd277fb398462fdef046969bdf5162b.jpg)
提供用户名和密码后就可以访问了:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/e3762efeca337cfb14ca81cf8541dd0a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/d5d44b84c0adb760ce4db65668da639d.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/61f457c78205a24ed6e340954b23111f.jpg)
二、httpd的status(服务器状态信息):
开启原则:status在需要时才开启,就算需要开启,也尽量以最少的信息输出为原则(因为开启status会影响服务器性能;)
开启方法:通过status_module模块允许Apache服务器生成状态报告;
1、 查看当前Apache服务器是否启用了mod_status模块;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/e3a510de2422c8e2136f450b2f43254c.jpg)
2、 status是通过容器类指令<Location /server-status></Location>来定义的,具体如下所示:
<Location /server-status> #Locaton容器类指令表示:我们要通过哪个URL路径访问下面定义的status(URL可以自定义) SetHandler server-status #server-status是处理器名称,SetHandler指令用于设置处理器 AuthName "Status" #定义用户访问控制(服务器状态信息不能让所有人查看) AuthType Basic AuthUserFile /etc/httpd/conf/.statuspass Require valid-user </Location>通过ExtendedStatus指令可以查看更为详细的status信息:
ExtendedStatus On|Off #开启或关闭扩展的status信息(默认是关闭的)3、 举例说明:
(1) 编辑httpd.conf文件,启用status_module模块(默认就是启用的,但最好确认一下):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/6b19c205fe75e2f35031e435c8da2b14.jpg)
(2) 找到<Loacation /server-status>,取消注释:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/d67e72c57de617579b6e6c2830b7ce5d.jpg)
(3) 保存退出后重读配置文件:service httpd reload
(4) 在windows客户端的浏览器中访问/server-status:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/ccd2087f9c6e0e6e1cdf7c54a0815be3.jpg)
(5) 开启ExtendedStatus以查看更为详细的status信息:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/f9a3fab8f47167e04f976ab64383ba28.jpg)
(6) 保存退出并重读httpd配置文件,然后在windows客户端浏览器再次访问server-status页面:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/b17e5cf6382ff0778b3da2bb5569196d.jpg)
说明:1、服务器的status会影响服务器的性能,如果没有必要建议关闭。就算需要开启,也尽量让其输出最基本的信息;
2、服务器的status信息一般不允许所有用户查看,因此建议设置用户访问控制;
三、Curl命令的使用:
curl是基于URL语法在命令行模式下工作的文件传输工具,它支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法,FTP上传,kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http代理服务器管道(proxy tunneling),甚至还支持IPv6,socks5代理服务器,通过http代理服务器上传文件到FTP服务器等等,功能十分强大(类似于迅雷,但curl还是一个基于命令行的浏览器)。
curl的常用选项: -A/--user-agent <string> 设置用户代理发送给服务器 -basic 使用HTTP基本验证 --tcp-nodelay 使用TCP_NODELAY选项 -e/--referer <URL> 来源网址 --cacert <file> CA证书 (SSL) --compressed 要求返回是压缩的形势 -H/--header <line>自定义头信息传递给服务器 -I/--head 只显示响应报文首部信息 --limit-rate <rate> 设置传输速度 -u/--user <user[:password]>设置服务器的用户和密码 -0/--http1.0 使用HTTP 1.0Example:
1、只显示响应报文首部信息:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/7a0728c62a177e698f5d2d2115ef7008.jpg)
2、模拟Referer(从某个页面跳转过来):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/05/da5a17bda418e4bbc8efb02acc3e6487.jpg)
四、httpd支持压缩功能:
使用deflate_module模块可以压缩页面以优化网络传输速度:
<IfModule mod_deflate.c> # Restrict compression to these MIME types # 指定对某些MIME的格式文件进行压缩 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) # 配置压缩等级(1-9),9为最高等级,压缩比例最大,但消耗CPU资源也越多 DeflateCompressionLevel 9 # 对某些不支持压缩的浏览器进行部分压缩或不压缩 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html </IfModule>小结:
【httpd配置的注意点】;
1、 指令的分类:指令与容器类指令:
首字母大写,形如ServerRoot “ ”被称为指令;用一对尖括号括起来,形如:<Directory “FS_PATH”></Directory>被称为容器类指令2、 指令的继承性:
httpd的指令是由继承性的,例如我们先定义了一个<Directory>容器类指令,如下所示:
<Directory "/website/htdocs"> Options Indexes FollowSymLinks #随后,我们又定义了一个<Directory>容器类指令: <Directory "/website/htdocs/dowloads"> Options Indexes #这里没有显式定义FollowSymLinks,会继承上面的定义! # [+-] 指令: +FollowSymLinks明确添加该属性 -FollowSymLinks明确说不使用该属性
==========================================================今天就学习到这里吧,上面所写只是我学习过程当中的一些,一些,笔记吧,难免出现错误,或者表述不正确的地方,请见谅!
============================================================
本文出自 “佧拉贵银's Blog” 博客,请务必保留此出处http://kalaguiyin.blog.51cto.com/4831716/1699669
相关文章推荐
- Web学习之——02Apache的基本配置(全局配置、主服务器配置)
- Windows下配置Apache虚拟机
- (IIS8/8.5/Apache)301域名重定向
- Apache SVN配置
- linux(apache)
- 【手把手教你全文检索】Apache Lucene初探
- 使用Apache Camel处理web service请求的三种方法
- Spark java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32
- apache vhost配置
- BUILD问题“Class not found : Lorg/apache/commons/logging/Log”
- 写得很详细的apache的入门文档
- 安装潮流组合--LAMP+NFS(编译php-fpm模块与apache2.4结合)
- ubuntu14.0(linux) 安装 apache2.4+ 报 apr not found
- 五种开源协议(GPL,LGPL,BSD,MIT,Apache)
- Apache Spark 1.5发布,新特性一览
- Web性能压力测试工具之ApacheBench(ab)详解
- 浏览器、apache的连接超时详解
- Apache性能优化、超时设置,linux 重启apache
- 让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】
- Apache Maven 入门篇(下)