如果一台服務器只有一個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主機的瀏覽器測試:
成功!