您的位置:首页 > 运维架构 > Apache

用apache在本机配置多个基于ip的虚拟主机

2014-12-16 14:59 369 查看

用apache在本机配置多个基于ip的虚拟主机

在做网站的时候总会遇到这样一个麻烦:如果同时在做2个或两个以上的网站,但是,默认的apache的配置是只有一个网站,这样的话,切换起来很不方便。其实这个问题很好解决,就是把本机的apache配置成为虚拟服务器。但是,网上大多数教程的是教用apache如何配置基于域名的虚拟主机的,而在本机调试网站的时候,一般都是用本地ip(127.0.0.1 或localhost)直接访问,没有用到域名。所以得把apache配置成为基于ip地址的虚拟主机才行。

首先,补充一点理论知识:(如果熟悉网络的话可以略过)

网络课告诉我们,所有以127打头的ip地址都应该指向本机,并不只有127.0.0.1,这点大家可以试试。

这样一来,也就是说本机有足够多的ip地址供你来开设虚拟主机了。

然后,进入正式的配置工作,下面是apache的httpd.conf里相关配置部分:

1、Listen部分,必须直接指定端口,不指定ip地址,配置应写为:

Listen 80

2、不用像基于域名的虚拟主机那样写“NameVirtualHost”。

3、虚拟主机配置段:

<VirtualHost 127.0.0.1:80>

DocumentRoot /path/to/your/first/virtual/host

ServerName 127.0.0.1:80

</VirtualHost>

<VirtualHost 127.0.0.2:80>

DocumentRoot /path/to/your/second/virtual/host

ServerName 127.0.0.2:80

</VirtualHost>

...

4、然后相应的配置好各个目录属性,下面是一个目录属性的典型配置:

<Directory"/path/to/your/first/virtual/host">

Options Indexes FollowSymLinks Multiviews

AllowOverride All

Order Allow,Deny

Allow from all

</Directory>

重启apache2以后,你的虚拟主机就配置好了,以后就可以通过127.0.0.1和127.0.0.2进入不同的站点了。

1.基于相同IP不同Port的虚拟主机

1)vi /etc/httpd/conf/httpd.conf  (建议使用nano或gedit等编辑器,下同)

2)将Listen字段改为

Listen 80

Listen 8080

(以上设置表示使用80以及8080端口,好像8888端口有冲突)

3)更改虚拟主机部分为:

<VirtualHost 192.168.0.1:80>

DocumentRoot /var/www/html/website1

</VirtualHost>

<VirtualHost 192.168.0.1:8080>

DocumentRoot /var/www/html/website2

</VirtualHost>

4)保存以上设置

5)创建目录以及页面文件:

#mkdir –p /var/www/html/website1

#mkdir –p /var/www/html/website2

#cd /var/www/html/website1

#cat >index.html<<EOF

>website1

>EOF

#cd /var/www/html/website2

#cat >index.html<<EOF

>website2

>EOF

(注:在/etc/httpd/conf/httpd.conf中有DirectoryIndex index.htmlindex.html.var,表示只读index.html,而不读index.htm,切记)

6)service httpd restart

完成以上设置后,可以通过以下方式访问:

1)打开浏览器

2)输入http://192.168.0.1:80以及http://192.168.0.1:8080

2.基于相同Port不同IP的虚拟主机

1)不同IP地址的配置:

#cd /etc/sysconfig/network-scripts

#cp ifcfg-eth0 ifcfg-eth0:1

#vi ifcfg-eth0:1

将eth0:1更改为:

DEVICE=eth0:1

ONBOOT=YES

BOOTPROTO=static

IPADDR=192.168.0.2

NETMASK=255.255.255.0

2)service network restart

3)vi /etc/httpd/conf/httpd.conf

4)更改虚拟主机部分为:

<VirtualHost 192.168.0.1:80>

DocumentRoot /var/www/html/website1

</VirtualHost>

<VirtualHost 192.168.0.2:80>

DocumentRoot /var/www/html/website2

</VirtualHost>

5)创建目录以及页面文件:

#mkdir –p /var/www/html/website1

#mkdir –p /var/www/html/website2

#cd /var/www/html/website1

#cat >index.html<<EOF

>website1

>EOF

#cd /var/www/html/website2

#cat >index.html<<EOF

>website2

>EOF

完成以上设置后,可以通过以下方式访问:

1)打开浏览器

2)输入http://192.168.0.1:80以及http://192.168.0.2:80

3.基于域名的虚拟主机的访问

1)vi /etc/http/conf/httpd.conf

2)更改虚拟主机部分为:

NameVirtualHost 192.168.0.1

<VirtualHost www1.example.com>

DocumentRoot /var/www/html/website1

ServerName www1.example.com

</VirtualHost>

<VirtualHost www2.example.com>

DocumentRoot /var/www/html/website2

ServerName www2.example.com

</VirtualHost>

(注:以上设置中NameVirtualHost不可以省略)

3)创建目录以及页面文件:

#mkdir –p /var/www/html/website1

#mkdir –p /var/www/html/website2

#cd /var/www/html/website1

#cat >index.html<<EOF

>website1

>EOF

#cd /var/www/html/website2

#cat >index.html<<EOF

>website2

>EOF

4)完成以上设置后,可以通过以下方式访问:

1)打开浏览器

2)输入http://www1.example.com 以及
http://www2.example.com

注意:如果虚拟主机的目录不在“/var/www”下面,则需要关闭SELINUX,方法如下:

把/etc/selinux/config 中的

SELINUX=enforcing

改成

SELINUX=permissive

然后重启。

如果想立即生效,则执行:

# setenforce 0

命令就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: