windows下Apache的虛擬主機配置

一、Apache虛擬主機:php

    在Apache上有關於虛擬主機的具體說明,具體能夠參考Apache手冊,這裏簡單的說一下虛擬主機主要分爲兩種:linux

        一、基於主機名的虛擬主機(一個IP地址,多個網站) web

        二、基於IP地址的虛擬主機(每一個站點擁有一個的獨立IP地址) apache

    雖然是兩種,但其實仔細比對,就能發現:基於主機名的其實很是像一個特殊的基於IP地址的方式,如何實現虛擬主機,思路是這樣的:windows

二、windows下:瀏覽器

     基於主機名 dom

    設置DNS(windows上的 / hosts文件),好讓咱們的域名被解析到特定的IP地址,例如 127.0.0.10,當咱們訪問域名時,其實是訪問到了這個特定的IP地址網站

      

--> 這個IP地址指向咱們的Apache服務,此時修改咱們的httpd.conf文件開啓咱們 mod_rewrite模塊 url

        

      同時啓用咱們的虛擬主機配置文件spa

        

       固然咱們也能夠不啓用這個文件,而將須要配置的虛擬主機信息直接寫到httpd.conf中

--> httpd-vhosts.conf 的配置:

       

            

      文件中配置的寫法會有默認的示例,相似於這樣:

       

        可是有一些須要注意的地方:(這是我看手冊以爲比較重要的,我的意見且不徹底整理)

         一、<VirtualHost>的使用並不影響Apache的監聽地址。你須要使用Listen來確保Apache正在監聽正確的地址。

               也就是說:這個設置是在Apache地址監聽的基礎上纔有做用的,因此這裏的IP要有做用首先須要Listen的正確設置保證

         二、基於域名的虛擬主機:

              

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
# apache 服務默認監聽 80 端口
# 若是要監聽其餘端口須要使用
# listen 443
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    # 管理員郵箱
    ServerAdmin webmaster@webroot
    # 應用根目錄
    DocumentRoot "E:/wamp/www"
    # 虛擬域名 
    ServerName www.webroot.com
    # 下面這兩行無關緊要 
    ErrorLog "logs/dummy-host2.localhost-error.log"
    CustomLog "logs/dummy-host2.localhost-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@warmmail
    DocumentRoot "E:/wamp/www/WarmMail"
    ServerName www.wmail.com
    # 能夠看到這裏下面的我刪掉了,沒有什麼影響
</VirtualHost>
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin wangxb@phpexcel
    DocumentRoot "E:/wamp/www/phpexcel"
    ServerName www.phpexcel.com
</VirtualHost>

  

 

    效果:

       瀏覽器中輸入:wangxb.com (這裏是個人一個thinkPHP的項目)

         

 

    

    瀏覽器輸入:webroot.com (這個我綁定到了www的根目錄)

 
 
 

 

    基於IP地址的虛擬主機:

    上面基本都是基於主機名的虛擬主機的設置,很簡單,下面的基於IP的虛擬主機更簡單,由於個人感受是:基於主機名的虛擬主機就是基於IP的虛擬主機的特例,爲何這麼說?

     答:由於咱們能夠把基於主機名的當作是基於IP的,只是有兩個域名基於同一個IP,也就是說:有兩個 <VirtualHost> 以上的設置的IP和端口是相同的,可是其中的ServerName 和DocumentRoot 設置不相同。

     好了來看看,基於IP的設置,至於httpd.conf的配置就不須要修改了,主要是修改

            / hosts文件   ,也就是將域名綁定到不一樣的ip

         

    再來修改 /httpd-vhosts.conf 文件

                   

      咱們看到兩個兩個域名兩個ip,對應的DocumentRoot 是不同的。

     效果:瀏覽器中的效果是和上面的效果同樣的,這裏咱們使用F12的 network 來看看

           webroot.com

                

               network:

                

   

      wangxb.com

             

           network

           

 

好了,以上就是虛擬主機的設置。這裏作個簡單的介紹,Apache的中文手冊其實已經很是的給力了,只有有一些基礎web開發的知識,手冊是徹底能夠看懂的,並且說得很是詳細。你們在配置的時候,出現問題能夠去好好看看手冊

特別強調: 

         一、以上的每一步有關Apache配置文件的修改必須重啓Apache服務

         二、當你在修改hosts文件時可能提示你權限不夠

              

        三、當你編輯httpd.conf文件啓用虛擬主機配置文件時,你可能會遇到這個狀況:

            

           讓我鬱悶了兩個小時的問題,莫名其妙的沒有權限,想一想我何時在window會這樣啊? 一時我竟不知所措,若是是linux的話,我確定回去ll -> chmod的啦,可是這是windows啊,怎麼會這樣,想一想剛纔還好好的怎麼就這樣了呢,一切又還原,重啓服務,最後發現就是上面的開啓虛擬主機配置文件的緣由,當咱們開啓了虛擬主機的配置時,咱們必定要正確設定 下的 httpd-vhosts.conf

            
      以上就是window上的Apache的虛擬主機的配置,對於linux下的配置也是類似的,有時間了我會繼續寫linux上的配置和niginx的配置,哎就這麼多吧,要是都寫了 估計太長了也沒人看,啊哈哈、、、分開篇幅小點,你們看的也有針對性,須要那個看那篇。
 
 
 
 
 



相關文章
相關標籤/搜索