设为首页 收藏本站
查看: 1909|回复: 0

LAMP系列之Apache虚拟主机详解

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2014-4-22 22:36:46 | 显示全部楼层 |阅读模式
配置虚拟主机前的一些必备的开胃小菜:
1、2.2版本和2.4版本的关于开启虚拟主机的不同区别
apache2.2x系列的版本,需要启用一个指令NameVirtualHost来开启虚拟主机的功能
Apache2.4 不需要开启NameVirtualHost
2、定义站点的核心要素有哪些?
如在同一个物理主机上,提供了两个不同的站点,每一个站点应该独立具有的资源或者配置、甚至是信息应该有哪些?
(1)DocumentRoot
(2)ip地址
(3)ServerName ,每个主机都应该有主机名
(4)对于任何一个目录都应该封装一个<Directory></Directory>容器
(5)Alias 路径别名
(6) ServerAlias服务器别名
(7)Errorlog
(8)CustomLog
(9)<Location  "/images">
(10)ScriptsAlias 脚本别名
例子:
DocumentRoot  /www/test1.com/
<Directory   "/www/test1.com/">
options
AllowOVerrride
</Directory>
#Directory封装定义用户访问每一个本地文件系统目录下的文件该具有什么样的访问属性
#而Location则用来定义RUL
Alias
期望两个名称访问的是同一个主机,怎么办?ServerAlias,服务器端别名来解决
3、虚拟主机的定义,使用VirtualHost标签封装起来即可;要需要注意虚拟主机和中心主机不能同时使用,要使用虚拟主机首先得取消中心主机,注释中心主机的DocumentRoot即可
<VirtualHostHost>
指令1......
指令2......
</VirtualHost>
1)基于IP的Host的写法:ip:端口的格式即可
ip1:80
ip2:80
2)基于端口的Host的写法:
ip:80
ip:8080
3)基于域名的Host写法:
ip:80
*80#当前主机上每一个ip都监听
基于域名的ServerName一定是不同的
Apache虚拟主机的具体实现
1
1)首先需要取消中心主机
wKioL1NWBcTQFU0yAABhrcuKFxI057.jpg
2)直接在httpd.conf里面添加VirutalHost标签对定义即可,或者在conf.d目录下新建文件virtual.conf文件也可以,这样将来管理起来更方便
[iyunv@localhost ~]# vim /etc/httpd/conf.d/virtual.conf
服务器端代码实现:
#定义第一个虚拟主机
<VirtualHost 192.168.1.10:80>
        ServerName test1.com
        DocumentRoot "/data/html/test1"
</VirtualHost>
#定义第二个虚拟主机
<VirtualHost 192.168.1.11:80>
        ServerName test2.com
        DocumentRoot "/data/html/test2"
</VirtualHost>
1、基于ip的虚拟主机的实现


1>创建测试目录文件
[iyunv@localhost html]# mkdir /data/html/{test1,test2} -pv
mkdir: created directory `/data/html'
mkdir: created directory `/data/html/test1'
mkdir: created directory `/data/html/test2'
2>创建测试页面文件
[iyunv@localhost test1]# echo "<h1>This is a test1 site </h1>">> index.html
[iyunv@localhost test1]# cd ../test2
[iyunv@localhost test2]# echo "<h1>This is a test2 site </h1>">> index.html
3>创建ip地址别名
[iyunv@localhost test2]# ip addr add 192.168.1.11/24 dev eth0
[iyunv@localhost test2]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fb:17:2d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.11/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fefb:172d/64 scope link
       valid_lft forever preferred_lft forever
4>测试ip别名的连通性
[iyunv@localhost test2]# ping 192.168.1.11 -c 2
PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0.599 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.067 ms
--- 192.168.1.11 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.067/0.333/0.599/0.266 ms
5>检查配置文件语法并重启服务
[iyunv@localhost test2]# httpd -t
Syntax OK
[iyunv@localhost test2]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
6>客户端测试




wKiom1NWBkXR4esxAADOV3Na3MI805.jpg
wKioL1NWBhugcbMjAADGy0_7QGU508.jpg
2、基于端口的虚拟主机的实现


1>配置文件:<VirtualHost 192.168.1.11:8080>
        ServerName test3.com
        DocumentRoot "/data/html/test3"
</VirtualHost>
2>创建相关目录:
[iyunv@localhost ~]# mkdir /data/html/test3 -pv
mkdir: created directory `/data/html/test3'
[iyunv@localhost ~]# echo "<h1>This is a test3 website</h1>" >>index.html
3>重启服务
[iyunv@localhost ~]# httpd -t
Syntax OK
[iyunv@localhost ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
4>基于端口的虚拟主机要需要在httpd.conf主配置文件中指定
wKioL1NWBkyyy4JGAACvP5qmPMc969.jpg
5>验证
[iyunv@localhost ~]# httpd -t
Syntax OK
[iyunv@localhost ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
6>客户端访问测试
wKioL1NWBoCi54udAACeUjToutg010.jpg
wKioL1NWBoGAoP1bAACG2_aZKMo230.jpg
3、基于主机名的虚拟主机的实现


NameVirtualHost 192.168.1.10:80
<VirtualHost 192.168.1.10:80>
        ServerName test4.com
        DocumentRoot "/data/html/test4"
</VirtualHost>
[iyunv@localhost ~]# mkdir /data/html/test4
[iyunv@localhost ~]# cd /data/html/test4
[iyunv@localhost test4]# echo "<h1>This is  test4 web site</h1>" >index.html
在客户端设置基于/etc/hosts主机名的解析:
%SystemRoot%\system32\drivers\etc\




wKiom1NWBujgHdD5AAE2TnQfj70976.jpg
wKioL1NWBr_ieB5UAAJtn_dmGdU209.jpg
使用ip地址来访问,默认将返回基于名称主机的第一个




wKioL1NWBwqB_BMxAADq8IA6Bk4449.jpg
wKiom1NWBzSQ_sMLAADfMkPvEE4081.jpg
wKioL1NWBwvA7GElAADtlOVZ3J4497.jpg
补充扩展内容1:为虚拟主机增加日志


CustomLog  "/etc/httpd/conf/test1/access_log" combined
创建日志目录:
[iyunv@localhost ~]# mkdir /etc/httpd/conf/test1 -pv
mkdir: created directory `/etc/httpd/conf/test1'
[iyunv@localhost ~]# mkdir /etc/httpd/conf/test4 -pv
mkdir: created directory `/etc/httpd/conf/test4'
测试:
[iyunv@localhost ~]# httpd -t
Syntax OK
[iyunv@localhost ~]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd:                                            [  OK  ]
[iyunv@localhost ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
客户端测试日志分析:
[iyunv@localhost ~]# tail -f /etc/httpd/conf/test1/access_log
192.168.1.3 - - [20/Apr/2014:23:36:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:08 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:08 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:08 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:08 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:08 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
192.168.1.3 - - [20/Apr/2014:23:36:38 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
定义test4.com下的/data/html/test4拒绝某个ip访问
13         <Directory "/data/html/test4">
14         options none
15         AllowOverride none
16         Order deny, allow
17         deny from 192.168.1.100
18         </Directory>
补充扩展内容2:基于虚拟主机的用户认证


只需要在Directory里面添加以下语句即可
<Directory>
Options none
AllowOverride AuthConfig
AuthType Basic
AuthName "Allow trust people"
AuthUserFile "/etc/httpd/.htpasswd"
Required User test1
Required  valid-user
<Directory>
附录:基于上文的所有配置文件及配置文件截图
wKioL1NWB37CTEMDAAILvNWYETc205.jpg
1NameVirtualHost 192.168.1.10:80
2 #定义第一个虚拟主机
3<VirtualHost 192.168.1.10:80>
4         ServerName www.test1.com
5         DocumentRoot"/data/html/test1"
6         CustomLog  "/etc/httpd/conf/test1/access_log"combined
7</VirtualHost>
8
9<VirtualHost 192.168.1.10:80>
10        ServerName www.test4.com
11        DocumentRoot "/data/html/test4"
12        CustomLog "/etc/httpd/conf/test4/access_log" combined
13        <Directory "/data/html/test4">
14        options none
15        AllowOverride none
16        Order deny, allow
17        deny from 192.168.1.100
18        </Directory>
19</VirtualHost>
20
21 #定义第二个虚拟主机
22
23<VirtualHost 192.168.1.11:80>
24        ServerName www.test2.com
25        DocumentRoot "/data/html/test2"
26</VirtualHost>
                                                                       2014-04-22-v1.0第一版,后续更新。。。。。。由于本人技术有限,文中难免有错误或遗漏之处,请各位网友积极提出宝贵意见和建议,也希望成为各位技术爱好者的好朋友,谢谢。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-18157-1-1.html 上篇帖子: LNMP搭建论坛 下篇帖子: Wamp修改端口 虚拟主机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表