我正在尝试将本地主机上各个端口上运行的服务重定向到单个端口上的子路径。例如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
和 ,/app2
则127.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 一起使用。