2009-07-21 102 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