Apache:使用反向代理并运行本地网站

时间:2014-01-29 19:53:25

标签: apache reverse-proxy

在我的linux机器上,我将apache2作为反向代理运行,因为我想在端口8083上创建另一个Web服务器,同时也使其受密码保护。为此我将其添加到我的apache2.conf:

<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之类的东西来做到这一点,但我无法弄清楚如何这样做或者甚至是可能的。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

我认为你有两个选择:

1。将代理放在单独的<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,保持很好的分离。