虛擬機器主機不要放在一個共同的連接埠,否則預設情況下只進入每一個虛擬機器主機目錄。
ServerRoot "/var/lib/apache2.2"
DocumentRoot "/var/lib/apache2.2/htdocs"
ErrorLog "logs/error_log"
# apache 解析 .php 檔案
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# myproject.com
Listen 192.168.55.9:80
<VirtualHost *:80>
DocumentRoot /var/lib/apache2.2/htdocs/myproject
ServerName myproject.com
# ScriptAlias /cgi-bin/ "/var/lib/apache2.2/htdocs/myproject/cgi-bin/"
</VirtualHost>
# myproject1.com
Listen 192.168.55.9:81
<VirtualHost *:81>
DocumentRoot /var/lib/apache2.2/htdocs/myproject1
ServerName myproject1.com
# ScriptAlias /cgi-bin/ "/var/lib/apache2.2/htdocs/myproject1/cgi-bin/"
</VirtualHost>
而我們在用戶端的hosts檔案裡面也需要做IP映射,即:
192.168.55.9 myproject.com
192.168.55.9 myproject1.com
但是我們不需要在伺服器端的hosts裡面做IP映射。
實際上我們做請求時,還是用80連接埠來響應。
經測試,上面這種做法存在一個問題:即使是通過 myproject1.com 來訪問,進入的還是 myproject.com 。
改為下面的可正常跳轉:
ServerRoot "/var/lib/apache2.2"
DocumentRoot "/var/lib/apache2.2/htdocs"
ErrorLog "logs/error_log"
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
NameVirtualHost *:80
Listen 192.168.55.9:80
# myproject.com
<VirtualHost *:80>
DocumentRoot /var/lib/apache2.2/htdocs/myproject
ServerName myproject.com
# ScriptAlias /cgi-bin/ "/var/lib/apache2.2/htdocs/myproject/cgi-bin/"
</VirtualHost>
# myproject1.com
<VirtualHost *:80>
DocumentRoot /var/lib/apache2.2/htdocs/myproject1
ServerName myproject1.com
# ScriptAlias /cgi-bin/ "/var/lib/apache2.2/htdocs/myproject1/cgi-bin/"
</VirtualHost>