簡體   English   中英

通過局域網從另一台機器訪問虛擬主機

[英]Access virtual host from another machine over LAN

  • 我正在使用 Windows 7 和 Wamp 2.2 服務器。
  • 我設置了 2 個虛擬主機: www.project1.comwww.project2.com
  • 我已將“ hosts ”、 httpd.confhttpd-vhosts.conf文件修改為我在下面提到的更改。

使用我的瀏覽器,當我鍵入www.project1.comwww.project2.com時,我成功地在安裝了服務器的筆記本電腦上打開了我的 web 頁面。

主機文件”中的更改:我已將以下內容附加到文件末尾:-

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 (帶有服務器的瀏覽器)中的瀏覽器打開這些 web 頁面,我如何從 PC_2 中的瀏覽器訪問這些PC_2頁面? (我指的是通過 LAN 連接到PC_1的任何 PC。)

除了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 

在virtualhost指令中,將127.0.0.1更改為*:80 ,正如Gabriel所提到的,在另一台計算機的hosts文件中添加一個條目,添加您的域以與服務器的IP相關聯。

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

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

例如,如果您的服務器位於192.168.1.70上,那么在LAN上的其他計算機上,hosts條目將如下所示:

192.168.1.70     www.project1.com

重啟apache,應該可以正常工作。

請注意,當您使用虛擬主機時,如果無法在HTTP請求標頭中傳遞的域與配置中的站點設置之間進行匹配,則apache將使用第一個定義作為默認值,這就是您的默認設置頁面出現了。

您告訴apache使用NameVirtualHost *:80指令綁定到所有IP,但之后沒有為該外部IP設置站點。 希望有所幫助!

本地網絡中有兩台計算機。

計算機(192.168.1.70)安裝程序(D:\\ wamp \\ bin \\ apache \\ Apache2.2.11 \\ conf \\ extra \\ 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>

B計算機設置(c:/ windows / system32 / drives / etc / hosts):

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

B訪問A,我的項目正在運行。

要為所選答案考慮的幾個更新點:

  1. Apache版本2.3.11之后不再使用NameVirtualHost ,可以省略。

    在2.3.11及更高版本中,只要在多個虛擬主機中使用IP地址和端口組合,就會自動為該地址啟用基於名稱的虛擬主機。

  2. 因為我們正在談論通過LAN托管網站,所以我們要求*僅接受來自本地網絡上IP地址的連接。 例如,在公共Linksys路由器上,分配給網絡上每個設備的默認IP介於192.168.1.100到192.168.1.255之間。 您可以通過使用Require ip 192.168.1允許LAN上所有設備與IP地址192.168.1.XXX進行連接(請注意,最后一個八位字節不在IP上以允許整個范圍)。

    這允許您配置每個項目的訪問權限,以便一個可以通過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上的流量轉發給您的主機,您的站點將不會公開提供,我相信這被認為是最佳做法。 如果您需要控制LAN上設備可用的項目,則尤其必要。

  3. 提醒:您的主機應配置為使用靜態IP地址,而不是由路由器的DHCP分配。 由於我們正在編輯其他設備的hosts文件以指向服務器的IP,因此我們不希望它發生變化。

*我之所以包含這一點,是因為在本地開發服務器上擁有訪問限制是很常見的,您需要專門將其提供給本地網絡。

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

因此,您需要將它們添加到其他lan計算機上的hosts文件中。

如果您無法訪問本地的虛擬主機服務器。網絡,請檢查您是否已將防火牆配置為允許 httpd.exe 文件(位於文件夾 C:\wamp64\bin\apache\apache2.4.51\bin)允許傳入和傳出連接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM