我們在配置一臺服務器的時候,如果只運行一個站點,往往過于浪費資源。Nginx和Apache都可以通過配置虛擬主機實現多站點。配置虛擬主機的方式主要有兩種,一種是多個不同端口對應的多個虛擬主機站點,一種是同一端口對應多個不同域名的虛擬主機站點。這里我用80端口為例,在Apache配置多個不同域名虛擬主機。
試驗環境:Windows+Apache (Linux+Apache同理)
1、 虛擬機需要用到Rewrite,所以先編輯Apache的conf目錄下的httpd.conf文件
掉Rewrite模塊列行中前面的#號(刪除注釋)。添加mod_rewrite.so模塊支持。
LoadModule rewrite_module modules/mod_rewrite.so
同時,還要讓主配置文件包含虛擬機配置文件:
找到 #Include conf/extra/httpd-vhosts.conf 這一行去掉前面的 # 。
2、 然后編輯 /conf/extra/httpd-vhosts.conf 文件:
(1)如果里面有默認的設置,刪除里面默認設置的虛擬主機,我這里是以下這段代碼:
<VirtualHost default:80>
DocumentRoot "/Apache24/htdocs"
ServerName example.com:80
</VirtualHost>
(2)修改NameVirtualHost參數,要在本機的所有IP的80端口上面做多域名:NameVirtualHost *:80
(3)添加虛擬主機一:
<VirtualHost *:80>
#管理員郵箱
ServerAdmin *@163.com
#虛擬主機根目錄
DocumentRoot "E:/www/linux/"
#虛擬主機名
ServerName linuxidc.net
#虛擬主機別名
ServerAlias linuxidc.net
#日志路徑
ErrorLog "logs/linux-error.log"
CustomLog "logs/linux-access.log" common
RewriteEngine on
</VirtualHost>
(4)添加虛擬主機二:
<VirtualHost *:80>
#管理員郵箱
ServerAdmin *@163.com
#虛擬主機根目錄
DocumentRoot "E:/www/linuxidc/"
#虛擬主機名
ServerName linuxidc.com
#虛擬主機別名
ServerAlias linuxidc.com
#日志路徑
ErrorLog "logs/linuxidc-error.log"
CustomLog "logs/linuxidc-access.log" common
RewriteEngine on
</VirtualHost>
(5)保存退出
3、修改本地hosts文件:
在windows中,進入C:/Windows/System32/drivers/etc (在linux環境中應該是在/etc/hosts)
打開host文件,在最后面添加下面兩行:
127.0.0.1 linuxidc.net
127.0.0.1 linuxidc.com
保存退出
4、重啟服務器。
在你兩個虛擬機的根目錄下新建一些測試文件,比如在”E/www/linux/”目錄新建個test.html,在目錄"E:/www/linuxidc/"頁新建個test.html,寫上對應的測試代碼,在瀏覽器里輸入linuxidc.net/test.html和linuxidc.com/test.html查看結果。