仅第一个反向代理虚拟主机有效

仅第一个反向代理虚拟主机有效

我正在尝试将本地主机上各个端口上运行的服务重定向到单个端口上的子路径。例如http://127.0.0.100:5687/http://127.0.0.1/app/

我遇到的问题是只有第一个虚拟主机块有效。如果我交换 2 个主机,只有最顶层/第一个主机有效。所有其他主机都返回未找到错误。

以下是有问题的 apache 指令:

<VirtualHost *:80>
  ServerName app1.example.com
  #ServerAlias app1
  ProxyRequests Off
  ProxyPass /app1 http://127.0.0.1:6687/
  ProxyPassReverse /app1 http://127.0.0.1:6687/
</VirtualHost>

<VirtualHost *:80>
  ServerName app2.example.com
  #ServerAlias app2
  ProxyRequests Off
  ProxyPass /app2 http://127.0.0.1:7687/
  ProxyPassReverse /app2 http://127.0.0.1:7687/
</VirtualHost>

我在这里没看到什么?为什么只有第一个虚拟主机有效?

答案1

您的所有VirtualHost块均不匹配127.0.0.1,因此 Apache 将采用其找到的第一个块。

您的虚拟主机以 来区分ServerName。如果您想要同时访问/app1和 ,/app2127.0.0.1必须将两个ProxyPass指令放在同一个VirtualHost块中。

<VirtualHost *:80>
  ServerName app1.example.com
  ServerAlias app2.example.com
  ProxyRequests Off
  ProxyPass /app1 http://127.0.0.1:6687/
  ProxyPassReverse /app1 http://127.0.0.1:6687/
  ProxyPass /app2 http://127.0.0.1:7687/
  ProxyPassReverse /app2 http://127.0.0.1:7687/
</VirtualHost>

ServerName或者只需在您的 http 请求中使用即可。

http://app1.example.com/app1/
http://app2.example.com/app2/

无论如何,这/app*是多余的,我只需删除它并ProxyPass / http://...与两个 VirtualHosts 一起使用。

相关内容