Apache 在一个 VirtualHost 中有多个 ProxyPass 条目

Apache 在一个 VirtualHost 中有多个 ProxyPass 条目

所以我有以下两种配置:

一方面是后端服务器:

<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>

相关内容