2009-02-26 114 views
17

我有兩個應用程序,一個是www.myexample.com,另一個是blog.myexample.com。我正在使用PHP和Apache。如何將不同的子域請求重定向到不同的端口

現在,我想讓www.myexample.com在我的機器的端口82上運行,而端口83上的blog.myexample.com在同一臺機器上運行。如何配置apache和/或PHP腳本,以便正確處理請求的請求時?

編輯:感謝所有回覆的人,但我害怕我不明白這個問題 - 我的壞!

我真正想要的是模擬一個條件,即www.myexample.com和blog.myexample.com位於不同的機器上。因此,當請求進入時,網關服務器(也是託管www.myexample.com的服務器)將檢查這是對www.myexample.com還是對blog.myexample.com的請求,並進行必要的重新路由。

如何做到這一點?謝謝。

+0

Ummmm ......爲什麼以下行?你知道基於名稱的虛擬主機嗎? – derobert 2009-02-26 06:48:07

+0

借調@ derobert的「爲什麼」。請解釋。 – matpie 2009-02-26 07:23:36

+0

我更新了這個問題,對不起,在第一時間沒有發佈好問題 – Graviton 2009-02-26 07:26:43

回答

35

我會假設你有你自己的原因,希望兩個站點(wwwblog)在不同的端口上運行 - 在不同的進程。如果這不是你想要的,例如你不想有兩個不同的進程,那麼有不同的端口可能不是你想要的:使用VirtualHost來代替共同託管端口80上的同一個Apache + PHP實例內的兩個域。否則,請繼續閱讀。

假設您有兩個分別在localhost:82和localhost:83上監聽的apache + php進程,請提供第三個僅用於apache的進程以充當反向代理。有反向代理apache實例偵聽來自因特網的端口80上的請求,具有兩個虛擬主機定義。第一虛擬主機定義,www,將請求轉發到本地主機:82,而第二個虛擬主機定義,blog,將請求轉發到的locahost:83,如:

NameVirtualHost *:80 

# www 
<VirtualHost *:80> 
    ServerName www.myexample.com 
    ProxyPass    /  http://localhost:82/ 
    ProxyPassReverse  /  http://localhost:82/ 
</VirtualHost> 

# blog 
<VirtualHost *:80> 
    ServerName blog.myexample.com 
    ProxyPass    /  http://localhost:83/ 
    ProxyPassReverse  /  http://localhost:83/ 
</VirtualHost> 
0

關我的帽子的頂部:

Listen 82 
Listen 83 
NameVirtualHost 1.2.3.4 # Use your server's IP here 

<VirtualHost www.myexample.com:82> 
# Configure www.myexample.com here 
</VirtualHost> 

<VirtualHost blog.myexample.com:83> 
# Configure blog.myexample.com here 
</VirtualHost> 
5

我使用代理這種類型的東西。

在我的例子中,我有apache 1.3在端口80上運行,但是我需要svn repository在apache 2.2上運行,而且我不想每次在域的末尾輸入:82。所以,我提出在Apache 1.3代理重定向(80端口):

<VirtualHost *:80> 
    ServerName svn.mydomain.com 
    ServerAlias svn 
    ServerAdmin [email protected] 

    <IfModule mod_proxy.c> 
    ProxyPass/http://svn:82/ 
    </IfModule> 
</VirtualHost> 
0

更完整的答案,這將是做這樣的事情,讓你可以設置一個代理網關是什麼鬆耦合如上所述。

服務器名本地主機

<Proxy *> 
    Order deny,allow 
    Allow from localhost 
</Proxy> 

ProxyRequests   Off 
ProxyPreserveHost  On  

ProxyPass    /  http://localhost:10081/ 
ProxyPassReverse  /  http://localhost:10081/ 
ProxyPassReverseCookiePath/ http://localhost:10081/ 

2

運行在端子下面的行(指定域和子域名正確地)

sudo nano /etc/apache2/sites-available/subdomain.domain.com.conf 

將以下代碼粘貼和變化您的要求

<VirtualHost *:80> 
     ServerAdmin [email protected] 
     ServerName subdomain.domain.com 
     ServerAlias subdomain.domain.com 
     ProxyRequests Off 

     #ProxyPass/http://localhost:8080/ 
     <Location /> 
       ProxyPreserveHost On 
       ProxyPass http://domain.com:8080/ 
       ProxyPassReverse http://domain.com:8080/ 
     </Location> 
    # Uncomment the line below if your site uses SSL. 
    #SSLProxyEngine On 
</VirtualHost> 

運行在終端(指定域和子域名正確)

sudo a2enmod proxy 
sudo a2enmod proxy_http 
sudo a2enmod subdomain.domain.com.conf 
sudo service apache2 restart 
相關問題