我试图redirect在各种端口上的本地主机上运行的服务到单个端口上的子path。 例如http://127.0.0.100:5687/到http://127.0.0.1/app/ 。
我遇到的问题是,只有第一个虚拟主机块的作品。 如果我交换2主机只有最顶层/第一主机工作。 所有其他主机返回未find错误。
这里是有问题的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>
我在这里没有看到什么? 为什么只有第一个虚拟主机工作?
你的VirtualHost块没有一个匹配127.0.0.1 ,所以Apache获取它find的第一个块。
您的虚拟主机由ServerName区分。 如果要使用127.0.0.1访问/app1和/app2 ,则必须将两个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>
或者只是在您的http请求中使用ServerName 。
http://app1.example.com/app1/ http://app2.example.com/app2/
/app*无论如何都是多余的,我只是放弃它,并使用ProxyPass / http://...与两个虚拟主机。