在我的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之类的东西来做到这一点,但我无法弄清楚如何这样做或者甚至是可能的。
有什么想法吗?
答案 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
,保持很好的分离。