所以我有以下两种配置:
一方面是后端服务器:
<VirtualHost *:80>
ProxyPreserveHost On
ServerName localhost
ProxyPass /backend http://some_remote_ip:7000/backend
ProxyPassReverse /backend http://some_remote_ip:7000/backend
ProxyPassReverseCookiePath / /backend
ProxyPassReverseCookieDomain some_remote_ip localhost
</VirtualHost>
另一方面是前端服务器:
<VirtualHost *:80>
ProxyPreserveHost On
ServerName localhost
ProxyPass /excluded !
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>
如果我将它们放在一个.conf
文件中,则只有文件中最先写入的那个才会起作用,因此从技术上讲它们都是正确的。
所以我的问题是如何才能有多个ProxyPass
条目在相同的 VirtualHost
配置?
PS:我需要能够访问
- 后端位于
localhost/backend
- 前端位于
localhost
答案1
问题是,对于同一个虚拟主机 ( localhost
),您有多个 VirtualHost 部分,因此 Apache 只会选择一个。如果您希望这些配置一起工作,则必须将这些ProxyPass
指令放在单个 VirtualHost 配置中:
<VirtualHost *:80>
ProxyPreserveHost On
ServerName localhost
ProxyPass /backend http://some_remote_ip:7000/backend
ProxyPassReverse /backend http://some_remote_ip:7000/backend
ProxyPassReverseCookiePath / /backend
ProxyPassReverseCookieDomain some_remote_ip localhost
ProxyPass /excluded !
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>