如果一台服务器只有一个IP或需要通过不同的端口访问不同的虚拟主机,可以使用基于端口的虚拟主机配置。
(1) 在虚拟机的CentOS7服务器上配置 eth0:4 为192.168.1.214:
(2) 配置 /etc/hosts文件以方便测试:
进行ping测试,看ip地址有没有导通:
(3) 建立虚拟主机存放网页的根目录,并建立首页文件 index.html
(4) 修改 /usr/local/apache2/conf/httpd.conf 文件,在文件末尾添加以下内容:
Listen 192.168.1.214:8080 Listen 192.168.1.214:8081 Listen 192.168.1.214:8082
(5) 编辑每个IP端口的配置文件
在 /usr/local/apache2/conf/vhost/ 目录下新建 porttest.8080.conf ,porttest.8081.conf ,porttest.8082.conf 文件,以 porttest.8080.conf 文件为例:
<VirtualHost 192.168.1.214:8080> ServerName porttest DocumentRoot /usr/local/apache2/www/porttest/8080 <Directory "/usr/local/apache2/www/porttest/8080/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
(6) 测试配置文件,并重启Apache服务器
(i) 使用 apachectl -t 命令测试配置文件是否正确,使用 apachectl restart 命令重启Apache服务器:
(ii)使用curl命令测试虚拟主机的开启情况:
显示无法连接。这时才想起来防火墙没有开启 8080,8081,8082这几个端口,开启之:
vim /etc/sysconfig/iptables
重启iptables:
然后再用 curl 命令连接 porttest:8080,结果得到如下一系列错误:
百思不得其解为何 192.168.1.214的8080,8081,8082端口没有打开,反而是192.168.1.213的这三个端口打开了。重新检查上面所有的步骤,终于发现原来在第四步,将错将 Listen 192.168.1.214:8080 写成了 192.168.1.213:8080:
呵呵,大意了……改正之:
(iii) 测试Apache的配置是否正确,如果正确,重启Apache服务:
用curl 命令测试:
Windows主机的浏览器测试:
成功!