2009-07-21 96 views
16

我有一個非Apache服務器偵聽端口8001和Apache監聽端口80。我想實際上是由非Apache服務器通過端口來服務特定虛擬域80Apache的端口代理

例子:

<VirtualHost *:80> 
    Servername example.com 

    # Forward this on to the server on port 8001 
</VirtualHost> 

我以爲我可以用mod_proxy和ProxyPass來做這件事。

ProxyPass * http://www.example.com:8001/ 

但這並不奏效。

+1

對於ServerFault,您可能會有更好的運氣。 – 2009-07-22 00:20:39

回答

24

ProxyPass * http://www.example.com:8001/

星號只在一個塊中有效。正斜槓是你想要的。

ProxyPass/http://www.example.com:8001/ 
ProxyPassReverse/http://www.example.com:8001/ 

反向代理確保您的端口8001服務器發送的重定向調整爲您的代理的規範名稱名稱。

apache手冊有一些例子。 http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

+1

如果您收到內部服務器錯誤:`sudo a2enmod proxy` `sudo a2enmod proxy_http` `sudo service apache2 restart` – jaggedsoft 2016-09-10 22:11:58

4

我有阿帕奇在端口80上託管我也有一個Python Web服務器偵聽端口8880,這需要通過http://[mydomainname]/something訪問的網站。使用txyoji的回答,我得到它的工作通過簡單地添加一個代理傳遞給我的虛擬主機定義,像這樣:

ProxyPass /something http://mydomainname:8880/something 
ProxyPassReverse /something http://mydomainname:8880/something 

UPDATE

根據您的設置,更好的方法做,這是設置「本地主機」上端口的代理通行證。我認爲這更清楚你正在做什麼,再加上更便攜。與此同時,您甚至不必打開防火牆到該端口!你可以在本地代理通行證到任何港口,所以如果你不需要的話,沒有理由向外界公開。通過80端口彙集所有東西,並讓Apache始終「跑到前面」。然後,你可以擔心它的安全性。

ProxyPass /something http://localhost:8880/something 
ProxyPassReverse /something http://localhost:8880/something