2011-08-21 140 views
8

我目前正在嘗試配置我的Apache HTTP服務器的虛擬主機(子域),以便可以使用局域網上的另一臺計算機訪問它。 Apache和PHP和MySQL的當前設置在同一物理機器上本地工作。Apache虛擬主機(子域)訪問局域網上的不同計算機

因此,我有兩個虛擬主機設置(開發和cms)在非默認端口50080上運行。服務器的機器IP爲10.0.0.10。從同一臺物理機器,我可以通過訪問這兩個虛擬主機:

development.localhost:50080 
cms.localhost:50080 

從不同的物理機器,我可以通過訪問服務器的根目錄:

10.0.0.10:50080 

但我不能或做不知道如何從不同的機器訪問虛擬主機。我試過類似的東西:

development.10.0.0.10:50080 
cms.10.0.0.10:50080 

但他們似乎沒有工作。

這是我的httpd-vhosts文件看起來像:

NameVirtualHost *:50080 
<VirtualHost *:50080> 
    DocumentRoot "C:/www/HTTP" 
    ServerName localhost 
</VirtualHost> 

<VirtualHost *:50080> 
    ServerAdmin [email protected] 
    DocumentRoot "C:/www/HTTP/development" 
    ServerName development.localhost 
    ErrorLog "logs/development.localhost-error.log" 
    CustomLog "logs/development.localhost-access.log" common 
</VirtualHost> 

我看了這裏的一些其他職位和Apache論壇,但有不準確的情況下這一點。

我想知道如何從另一臺機器訪問虛擬主機(子域),並儘可能保持相同的端口。

在此先感謝

回答

25

好吧,我想通了,這裏有其他人是否在尋找配置這個:

============================================ ======================================

機器A(A帕什HTTP服務器): 的httpd的虛擬主機:

NameVirtualHost *:50080 

<VirtualHost *:50080> 
    DocumentRoot "C:/www/HTTP" 
    ServerName localhost 
    ServerAlias alias <!-- Added --> 
</VirtualHost> 

<VirtualHost *:50080> 
    ServerAdmin [email protected] 
    DocumentRoot "C:/www/HTTP/development" 
    ServerName development.localhost 
    ServerAlias development.phoenix <!-- Added --> 
    ErrorLog "logs/development.localhost-error.log" 
    CustomLog "logs/development.localhost-access.log" common 
</VirtualHost> 

主機:

127.0.0.1 development.localhost 

127.0.0.1 alias 
127.0.0.1 development.alias 

================== ================================================== ==============

機器B(客機): 主機:

10.0.0.10 alias 
10.0.0.10 development.alias 

從第二臺機器,你應該能夠「別名」和「development.alias」

+2

非常感謝,非常感謝!對於任何仍然遇到這種問題的人來說,有一些附註: 上面寫着「phoenix」,我使用了別名並且工作正常(不知道爲什麼在其他地方別名時使用鳳凰......) 也可能需要在您通過網絡看到您的網站之前,在您使用的端口上爲您的本地防火牆創建規則。我必須爲端口80創建一個例外(我沒有使用50080) –

+0

您還可以添加mod_proxy,然後添加ProxyPass/dev http://development.localhost/和ProxyReversePass/dev http:// development。localhost /,然後使用http:// public-ip/dev/ –

+0

是否可以在不編輯客戶端主機文件的情況下執行此操作? –

2

除非我失去了一些東西,你要麼需要設置DNS條目,或添加條目到/ etc每臺計算機訪問服務器的/ hosts文件。

localhost默認情況下存在於每個人的/ etc/hosts文件中,總是指向127.0.0.1。在不添加/ etc/hosts條目的情況下,developer.localhost不存在,並且用子域名前綴ip地址根本不起作用。

+0

我在Apache機器上的主機文件有條目: 127.0.0.1 development.localhost 第二臺機器還沒有什麼,我應該添加什麼? – YTKColumba

+0

這會工作,是的。 –

0

對於Named Virtual Hosts您需要使用主機名或域名連接到您的apache服務器。它不適用於ips。

您可以在第二個系統上的/etc/hosts中插入一個條目。

+0

我在Apache機器上的主機文件有條目: 127.0.0.1 development.localhost 第二臺機器還沒有什麼,我應該添加什麼?例如 – YTKColumba

+0

'<開發服務器的IP> development.server',然後將'ServerAlias development.server'添加到您的apache配置中。 –

3

我建議進行以下更改(添加ServerAlias線):

NameVirtualHost *:50080 
<VirtualHost *:50080> 
    DocumentRoot "C:/www/HTTP" 
    ServerName localhost 
    ServerAlias cms.myserver.com 
</VirtualHost> 

<VirtualHost *:50080> 
    ServerAdmin [email protected] 
    DocumentRoot "C:/www/HTTP/development" 
    ServerName development.localhost 
    ServerAlias development.myserver.com 
    ErrorLog "logs/development.localhost-error.log" 
    CustomLog "logs/development.localhost-access.log" common 
</VirtualHost> 

重啓Apache以確保更改生效。

然後在您的第二臺計算機上,您需要爲這些新域名添加一個自定義DNS條目。如果是Windows,請編輯文件c:\windows\system32\drivers\etc\hosts。如果是Linux,請編輯/ etc/hosts。無論哪種方式,地址:

10.0.0.10 development.myserver.com 
10.0.0.10 cms.myserver.com 

現在你的第二臺計算機上,你應該能夠訪問以下網址:

http://development.myserver.com:50080 
http://cms.myserver.com:50080 
+0

我試圖用配置啓動Apache時出現錯誤... – YTKColumba

+0

我在嘗試啓動Apache時遇到錯誤,因此它似乎是使用httpd-vhosts文件進行的配置。 順便說一句,第一個條目指向目錄的根目錄,我沒有添加「cms」條目,因爲我認爲它與「開發」條目相同 – YTKColumba

+0

日誌中的apache錯誤是什麼? –

0

使用SSH +膩子隧道,因此具有127.0訪問。 0.1我的服務器上,我設法通過執行以下操作上我的服務器端訪問我的子域:

# nano /etc/hosts 

127.0.0.1 localhost.localdomain localhost 
127.0.0.1 sub1.domain.com sub2.domain.com sub3.domain.com sub4.domain.com 

我沒有改變遠程計算機的主機文件,它就像一個魅力