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

Eri*_*ikL 8 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> 
Run Code Online (Sandbox Code Playgroud)

这就像一个魅力,但现在我也想用apache来服务一个网站,我想通过制作/ mysite指向/ var/www之类的东西来做到这一点,但我无法弄清楚如何做到这一点或者如果可能的话.

有任何想法吗?

gre*_*eke 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> 
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我可能会分开两个VirtualHosts,保持很好的分离.