2014-01-29 20 views
5

在我的Linux機器上,我有apache2作爲反向代理運行,因爲我想讓端口8083上的另一個web服務器可訪問,同時也使其受密碼保護。爲此,我已將此添加到我的apache2.conf:Apache:使用反向代理並運行本地網站

<VirtualHost *:80> 
    <Location/> 
     AuthName "Protected Area" 
     AuthType Basic 
     AuthUserFile /home/pi/.htpasswd 
     Require valid-user 
    </Location> 
     ProxyPass/http://localhost:8083/ 
     ProxyPassReverse/http://localhost:8083/ 
</VirtualHost> 

這工作就像一個魅力,但現在我也想使用Apache服務站點,我想通過使像/ mysite的點要做到這一點到/ var/www,但我無法真正弄清楚如何做到這一點,或者甚至可能。

任何想法?

+0

只是_naming_網站不同的選項?這將是在同一臺機器上安裝不同虛擬主機的最簡單方法... – Wrikken

回答

5

我認爲你有兩個選擇:

把代理在一個單獨的<Location /someurl>並把網站之外。請求http://localhost/someurl/將被代理,其他的一切都是本地站點:

<VirtualHost *:80> 
    <Location /someurl > 
     # Password protection omitted for brevity 
     ProxyPass http://localhost:8083/ 
     ProxyPassReverse http://localhost:8083/ 
    </Location> 

    # Here is the site 
    DocumentRoot /var/www 
    # ... etc site config 
</VirtualHost> 

2.使用兩個獨立的VirtualHosts,一個代理和一個用於網站。您將需要兩個獨立的主機名指向您的本地IP。僅限本地操作,請使用/etc/hosts。在本例http://a.localhost/是代理,http://b.localhost是網站:

/etc/hosts文件:

127.0.0.1  a.localhost 
127.0.0.1  b.localhost 

Apache的配置:

# This is the proxy, http://a.localhost/ 
<VirtualHost *:80> 
    ServerName a.localhost 
    # Do password protection as needed 
    ProxyPass/http://localhost:8083/ 
    ProxyPassReverse/http://localhost:8083/ 
</VirtualHost> 

# This is the site, http://b.localhost/ 
<VirtualHost *:80> 
    ServerName b.localhost 
    DocumentRoot /var/www 
    # ... etc site config 
</VirtualHost> 

我可能會去兩個獨立VirtualHosts,保持很好的分開的東西。

+0

謝謝grebneke,我認爲這可以工作(今晚必須嘗試它)。我想我會先選擇1,因爲我有幾個設備需要訪問它。也許我以後可以購買域名,我可以輕鬆使用選項2. – ErikL

+1

@ErikL - 我以爲你在本地主機上。你是否已經使用了域名?只需爲它添加一個子域名? – grebneke