gpt4 book ai didi

Apache ProxyPass for URLS 不一致失败

转载 作者:行者123 更新时间:2023-11-28 21:52:41 27 4
gpt4 key购买 nike

这个让我抓狂。我有一个活跃且正在使用的 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。因此,客户拥有的不是“customer.FOO.com”,而是“FOO.com/customer/”

很好,听起来很简单,对吧?是的,没那么多。我编辑服务器“root”的 vhost 条目(当前显示登录页面),并将代理条目添加到其中的目录。应该这样做,对吧?是的,它不是:

<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 条目与其他虚拟主机条目中的内容相同。那么为什么它在另一个虚拟主机条目的根目录上工作,而不是作为主虚拟主机上的子目录呢?

暂停!

最佳答案

我最终通过在某个邮件列表中找到的一个特定提示解决了这个问题。 ProxyPassReverse 指令非常敏感,只有一个基本功能。它在第二个参数上匹配的任何内容(假设使用 ProxyPassReverse A B 形式)都将应用于第一个参数。因此,确保第二个参数正是来自您的应用程序的重定向至关重要,否则 ProxyPassReverse 指令将被忽略。

就我而言,我最终所做的是将 Location 条目更改为:

ProxyPass /a/ ajp://10.211.42.48:8009
ProxyPassReverse /a/ http://my.apphost.com/

一切都开始正常工作。

关于Apache ProxyPass for URLS 不一致失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13500016/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com