2012-06-28 98 views
23
  • 我使用Windows 7和Wamp 2.2服務器。
  • 我已經設置了2個虛擬主機:www.project1.comwww.project2.com
  • 我已將「hosts」,httpd.confhttpd-vhosts.conf文件修改爲我在下面提到的更改。

使用我的瀏覽器,當我輸入www.project1.comwww.project2.com,我成功地讓我的網頁上打開已經在服務器上安裝的筆記本電腦。通過局域網從另一臺計算機訪問虛擬主機

變化在 「hosts文件」:我已經附加了如下的文件的末尾: -

127.0.0.1  localhost 
127.0.0.1  www.project2.com 
127.0.0.1  www.project1.com 

變化在httpd.conf文件: -

Include conf/extra/httpd-vhosts.conf 

變化在httpd-vhosts文件中: -

NameVirtualHost *:80 

<Directory "D:/websites/"> 
    AllowOverride All 
    Order Deny,Allow 
    Allow from all 
    </Directory> 
<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/wamp/www/" 
    ServerName localhost 
</VirtualHost> 


<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 


<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/project2/" 
    ServerName www.project2.com 
</VirtualHost> 


現在;因爲我可以從 PC_1(帶服務器的那個)的瀏覽器打開這些網頁,我如何從 PC_2的瀏覽器訪問這些網頁? (我的意思是任何通過局域網連接到 PC_1的計算機。)

+0

我對這一切都很陌生,並且還有一些問題。 1.我的上述代碼適合我想實現的目標嗎? @Gabriel - 與上面的代碼,你的建議,更換計算機的hosts文件,它會打開上鍵入www.project1.com – jatin3893

+0

是的,這是應該做這種正常方式WAMP的默認頁面。例如,您可以設置多個ServerAlias選項,例如,如果您想將其與動態DNS服務結合使用。 – dmp

+0

只是指該鏈接 http://stackoverflow.com/questions/2530418/wamp-server-multiple-virtual-hosts-are-not-working-on-windows/17850423#17850423 我回答它... – 2013-07-25 06:44:46

回答

20

在您的虛擬主機指令中,將127.0.0.1更改爲*:80,並按照Gabriel所述,在另一臺計算機的主機文件中添加一個條目,添加要與您的服務器的IP關聯的域。

當你將一個明確的IP放入指令時,apache只會監聽該IP - 但通配符會告訴它綁定到可用的所有IP。

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 

如果你的服務器是192.168.1.70例如,然後在你的局域網的其他機器的主機條目看起來像:

192.168.1.70  www.project1.com 

重新啓動Apache,它應該工作的罰款。

需要注意的是,當您使用虛擬主機時,apache會使用第一個定義作爲默認值,因爲它無法在HTTP請求頭中傳遞的域與config中的網站設置之間進行匹配就是爲什麼你的默認頁面出現。

你告訴apache綁定到所有IP地址的NameVirtualHost *:80指令,但沒有爲該外部IP設置一個站點。希望有所幫助!

+0

你如何做到這一點,所以你可以使用ipaddress/virtualhostname從任何局域網機器,而無需編輯訪問機器主機? – dibs

+0

如果你想從iPhone測試這個例子呢?除了更改主機文件還有其他方法嗎? – Victor

0

您需要更改您嘗試從中查看該頁面的計算機上的hosts文件。

所以你需要將它們添加到其他局域網機器上的hosts文件。

+0

與上面的代碼,你的建議,更換計算機的hosts文件,它會打開上鍵入www.project1.com WAMP的默認頁我如何讓它去www.project1的索引頁.COM? – jatin3893

5

本地網絡中有兩臺電腦。

一臺電腦(192.168.1。70)設置(d:\瓦帕\ BIN \阿帕奇\ Apache2.2.11 \ CONF \額外\的httpd-vhosts.conf):

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project2/" 
    ServerName www.project2.com 
</VirtualHost> 

乙計算機設置(C:/窗/ SYSTEM32 /驅動器的/ etc /主機):

192.168.1.70 www.project1.com 
192.168.1.70 www.project2.com 

B訪問A,我的項目正在工作。

19

除了danp的回答,您可以訪問虛擬主機,而無需通過將端口分配給虛擬主機來更改客戶端計算機的etc/hosts文件

  1. 編輯服務器的httpd.conf文件在:

    \wamp\bin\apache\apache2.2.x\conf\httpd.conf 
    

    搜索「Listen」(約61行),如果你想用手機或平板電腦來訪問服務器,這是理想。您應該看到,它允許Apache監聽端口80的情況如下:

    Listen 0.0.0.0:80 
    Listen [::0]:80 
    

    添加以下行來添加監聽端口81(或任何端口):

    Listen 0.0.0.0:81 
    Listen [::0]:81 
    
  2. 編輯httpd-vhosts.conf文件在:

    \wamp\bin\apache\apache2.2.x\conf\extra\httpd-vhosts.conf 
    

    「虛擬主機」標籤更改爲端口81

    <VirtualHost *:81> 
        DocumentRoot "D:/websites/project1/" 
        ServerName www.project1.com 
    </VirtualHost> 
    
  3. 重新啓動Apache服務器。

  4. 在客戶機/平板電腦/手機上的Web瀏覽器,輸入之後按以下格式的端口號服務器的IP地址(192.168.0.10,或任何IP):

    http://192.168.0.10:81 
    
+0

完美的,我只想補充一點,你可能需要在防火牆 –

+0

我也有堅持的端口打開端口81 WAMP(入站規則)窗口。如果只有這樣一種方法,在本地LAN中使用多個主機名稱(在某些路由器的DNS設置或其他地方)來製作一臺Windows機器,將會更加優雅... –

+1

所有設備的完美解決方案。殺手解決方案:)經過測試和證明。謝謝 – ColinWa

2

幾個更新點來考慮所選答案:

  1. NameVirtualHost是Apache的版本後,不再使用 2.3.11並且可以省略。

    在2.3.11及更高版本,任何時候IP地址和端口組合在多個虛擬主機使用 ,基於域名的虛擬主機是 自動爲地址啓用。

  2. 因爲我們正在談論主辦網站通過局域網,讓我們設置一個 要求*您 本地網絡上的IP地址只有接受連接。例如,在常見的Linksys路由器上,分配給網絡上每個設備的默認IP地址爲192.168.1.100 至192.168.1.255。您可以通過使用Require ip 192.168.1 (注意最後一個八位位組離開IP以允許整個 範圍),允許連接來自IP地址爲192.168.1.XXX的局域網上的所有設備。

    這允許您設置每個項目的訪問,使一個可能 可通過LAN,另一種是隻可本地使用。

    # This will allow all LAN connections to www.project1.com 
    <VirtualHost *:80> 
        DocumentRoot "D:/websites/project1/" 
        <Directory "D:/websites/project1/"> 
         Require local 
         Require ip 192.168.1 
        </Directory> 
        ServerName www.project1.com 
    </VirtualHost> 
    
    # This will allow only the machine hosting the website to access www.project2.com 
    <VirtualHost *:80> 
        DocumentRoot "D:/websites/project2/" 
        <Directory "D:/websites/project2/"> 
         Require local 
        </Directory> 
        ServerName www.project2.com 
    </VirtualHost> 
    

    當你的網站將不會被公開在端口80到主機服務,而不路由器轉發流量,我相信這被認爲是最好的做法。如果您需要控制局域網上的設備可以使用哪些項目,則尤其必要。

  3. 提醒:您的主機應配置爲使用靜態IP地址 ,而不是由您的路由器的DHCP分配一個。由於我們是 編輯其他設備的主機文件指向服務器的IP,我們不希望它改變。

*我包括這一點,因爲它是常見的有一個本地開發服務器上的訪問限制,您將需要專門將其提供給您的本地網絡。

相關問題