虚拟主机的实现

示例1:基于ip

编辑配置文件,切换到最后一行,增加:

<VirtualHost 192.168.1.117:80>

    ServerName web1.ams.com

    DocumentRoot "/vhosts/web1/htdocs"

</VirtualHost>

<VirtualHost 192.168.1.115:80>

    ServerName web2.ams.com

    DocumentRoot "/vhosts/web2/htdocs"

</VirtualHost>

[root@bluee htdocs]# service httpd configtest

Warning: DocumentRoot [/vhosts/web1/htdocs] does not exist

Warning: DocumentRoot [/vhosts/web2/htdocs] does not exist

Syntax OK

[root@bluee htdocs]#

提示说虚拟主机配置文件不存在,于是创建:

[root@bluee htdocs]# cd

[root@bluee ~]# mkdir -pv /vhosts/{web1,web2,web3,web4}/htdocs

mkdir: created directory `/vhosts'

mkdir: created directory `/vhosts/web1'

mkdir: created directory `/vhosts/web1/htdocs'

mkdir: created directory `/vhosts/web2'

mkdir: created directory `/vhosts/web2/htdocs'

mkdir: created directory `/vhosts/web3'

mkdir: created directory `/vhosts/web3/htdocs'

mkdir: created directory `/vhosts/web4'

mkdir: created directory `/vhosts/web4/htdocs'

[root@bluee ~]#

先给前2个创建网页文件:web1,web2

[root@bluee ~]# vim /vhosts/web1/htdocs/index.html

[root@bluee ~]# vim /vhosts/web2/htdocs/index.html

[root@bluee ~]#

[root@bluee ~]# httpd -t

Syntax OK

[root@bluee ~]#

语法测试,ok

再加个ip地址:192.168.1.118/16 

[root@bluee ~]# ip addr add 192.168.1.118/16 dev eth0

[root@bluee ~]# ip addr list

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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:c1:45:55 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.117/24 brd 192.168.1.255 scope global eth0

    inet 192.168.1.118/16 scope global eth0

    inet6 fe80::20c:29ff:fec1:4555/64 scope link 

       valid_lft forever preferred_lft forever

3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 

    link/ether e6:63:37:68:33:9d brd ff:ff:ff:ff:ff:ff

[root@bluee ~]#

reload

浏览器访问:http://192.168.1.117/  显示page at web1 

            http://192.168.1.118/  显示page at web2 

都没问题。

示例2:基于port

再增加一个虚拟主机,端口改为:8080

并监听;

<VirtualHost 192.168.1.117:80>

    ServerName web1.ams.com

    DocumentRoot "/vhosts/web1/htdocs"

</VirtualHost>

<VirtualHost 192.168.1.118:80>

    ServerName web2.ams.com

    DocumentRoot "/vhosts/web2/htdocs"

</VirtualHost>

<VirtualHost 192.168i.1.118:8080>

    ServerName web3.ams.com

    DocumentRoot "/vhosts/web3/htdocs"

</VirtualHost>

#Listen 12.34.56.78:80

Listen 80

Listen 8080  这项改下,表示监听所有地址的8080端口

再创建个网页文件:web3

[root@bluee ~]# vim /vhosts/web3/htdocs/index.html

[root@bluee ~]# service httpd restart

访问 http://192.168.1.118:8080/  没问题。

示例3:基于hostname

先启用这项:

NameVirtualHost 192.168.1.117:80  这项也改为80,保持一致。  

表示基于主机名的虚拟主机;不过 httpd2.4不需要了

ip全改为:192.168.1.117:80

<VirtualHost 192.168.1.117:80>

    ServerName web1.ams.com

    DocumentRoot "/vhosts/web1/htdocs"

</VirtualHost>

<VirtualHost 192.168.1.117:80>

    ServerName web2.ams.com

    DocumentRoot "/vhosts/web2/htdocs"

</VirtualHost>

<VirtualHost 192.168.1.117:80>

    ServerName web3.ams.com

    DocumentRoot "/vhosts/web3/htdocs"

</VirtualHost>

[root@bluee ~]# httpd -t

Syntax OK

[root@bluee ~]#

检查下没错误

service httpd restart

再找台主机使用curl命令访问:

做host绑定:

vim /etc/hosts

把ip地址以及这几个主机名添加进来:(确保这台主机以及服务器端主机的iptables,selinux全部关掉,我老是忘!)

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.117 web1.ams.com web2.ams.com web3.ams.com

保存退出。

reload

再使用curl命令访问:

[root@Ams ~]# curl http://web3.ams.com

page at web3

[root@Ams ~]# curl http://web2.ams.com

page at web2

[root@Ams ~]# curl http://web1.ams.com

page at web1

[root@Ams ~]#

可以访问到。

还可以添加日志:

注意字母大小写,引号等问题,错一个字符,启动不起来。。。

<VirtualHost 192.168.1.117:80>

    ServerName web1.ams.com

    DocumentRoot "/vhosts/web1/htdocs"

    CustomLog logs/web1_access_log combined

</VirtualHost>

<VirtualHost 192.168.1.117:80>

    ServerName web2.ams.com

    DocumentRoot "/vhosts/web2/htdocs"

    CustomLog logs/web2_access_log combined

</VirtualHost>

<VirtualHost 192.168.1.117:80>

    ServerName web3.ams.com

    DocumentRoot "/vhosts/web3/htdocs"

    CustomLog logs/web3_access_log combined

</VirtualHost>

我们多访问几次:

[root@Ams ~]# curl http://web1.ams.com

page at web1

[root@Ams ~]# curl http://web2.ams.com

page at web2

[root@Ams ~]# curl http://web3.ams.com

page at web3

[root@Ams ~]# curl http://web2.ams.com

page at web2

[root@Ams ~]# curl http://web1.ams.com

page at web1

[root@Ams ~]#

查看服务器端日志:

已经有了。每个虚拟机使用各自独立的访问日志

[root@bluee ~]# ls /var/log/httpd/

access_log  error_log  web1_access_log  web2_access_log  web3_access_log

[root@bluee ~]# 

原创文章,作者:mississippi,如若转载,请注明出处:http://www.178linux.com/28014

赞 (0)
mississippimississippi
上一篇 2016-08-05 16:17
下一篇 2016-08-05 16:17

相关推荐

  • #招聘福利#深圳云戈科技有限公司广州分公司/运维工程师/广州/招聘3人

    深圳云戈科技有限公司广州分公司/运维工程师/广州 招聘人数:3人 职位名称:运维工程师 岗位职责:负责大型数据处理系统、交易系统的维护工作。包括系统调优、数据库调优、系统版本升级、系统事件             处理、系统监控与巡检、数据分析与修复、实施应急方案、参数配置、系统扩容与部署、维护报告…

    Linux干货 2016-03-28
  • N25第一周作业

    个人习惯用导图写的作业

    Linux干货 2016-12-04
  • Linux基础知识(六)-vim编辑器,crontab计划任务,bash脚本循环

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp [root@localhost ~]# vim&nbs…

    Linux干货 2016-10-31
  • Linux 的硬链接与软链接的区别

       链接是指在电子计算机程序的各模块之间传递参数和控制命令,并把它们组成一个可执行的整体的过程。通俗一点无非是把文件名和计算机文件系统使用的节点号链接起来。   linux中链接有硬链接和软连接之分,首先我们来介绍硬链接,硬链接相当于创建了文件的第二个名字,增加了额外的记录项用来引用文件,还是隶属与同一文件系统上,是同一个物理…

    Linux干货 2016-10-20
  • MAN手册使用指南及快捷键键位整理

      MAN手册使用指南及快捷键键位整理 Man mnual 手册说明          基本使用:man 命令 Man一共可分为八个章节: man1,man2,man3,man4……man8 1:用户命令 2:系统调用 3:C库调用 4:设备文件及特殊文件 5:文件格式…

    Linux干货 2016-10-18
  • 用户组管理系列(二):权限设置

    1、权限简介    操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可…

    Linux干货 2016-08-05