这个快把我逼疯了。我有一个活动且正在使用的 Apache 代理服务器在 EC2 上提供内容。它工作得很好,并且有各种配置如下的虚拟主机:
<VirtualHost *:80>
ServerName m.FOO.com
ServerAlias customer.FOO.com
ProxyPreserveHost On
ProxyPass / ajp://10.211.42.48:8009/
ProxyPassReverse / ajp://10.211.42.48:8009/
<Proxy ajp://10.211.42.48:8009/*>
Order allow,deny
Allow from all
</Proxy>
</VirtualHost>
这些都很好用,我没有问题。现在我想做的是移动它,而不是每个应用程序的单个虚拟主机,我想在主站点上有一个代理回应用程序服务器的子 URL。因此,他们将拥有“FOO.com/customer/”,而不是拥有“customer.FOO.com”的客户
太好了,听起来很容易,对吧?是的,没有那么多。我编辑服务器“root”的虚拟主机条目(当前显示登录页面),并将代理条目添加到其中的目录中。那应该这样做,对吧?是的,它不是:
<VirtualHost *:80>
ServerName web01.aws.FOO.com
DocumentRoot /var/www/html
ErrorLog logs/www.FOO.com-error_log
CustomLog logs/www.FOO.com-access_log common
<Location /a>
ProxyPass ajp://10.211.42.48:8009
ProxyPassReverse ajp://10.211.42.48:8009
</Location>
<Location /t>
ProxyPass http://adm01
ProxyPassReverse http://adm01
</Location>
<Proxy ajp://10.211.42.48:8009/*>
Order allow,deny
Allow from all
</Proxy>
</VirtualHost>
如果我点击http://www.FOO.com/t/ - 我得到内部网络服务器 - 它代理转发正确,一切都很好。如果我点击http://www.FOO.com/a/我会收到 404 错误。访问日志甚至显示 404 错误。
请注意,ProxyPass AJP 条目与其他 vhost 条目中的相同。那么为什么它在另一个 vhost 条目的根上工作,而不是作为主 vhost 上的子目录呢?
哈!