ProxyPass 无法与 ProxyPassMatch 协同工作

ProxyPass 无法与 ProxyPassMatch 协同工作

因此目前我在 Oracle HTTP Server 实例上配置了一个虚拟主机,并使用 ProxyPass 如下:

ProxyPass ^/test/home/ https://example.com/
ProxyPassMatch ^/test/home/(.*)$ https://example.com/$1
ProxyPassReverse ^/test/home/(.*)$ https://example.com/$1

当我尝试访问时,https://mywebsite.com/test/home/<url_from_other_server>请求似乎按预期工作。但是,当我尝试访问时,https://mywebsite.com/test/home/它没有代理我,https://example.com/而是返回 404。

通配符ProxyPassMatch似乎对我尝试访问的所有子网址都有效,但常规ProxyPass关键字却无效。

我也尝试过完全删除ProxyPass,但在尝试访问 /test/home/ 时,仍然出现同样的 404 错误

有人知道是什么导致了这种奇怪的行为吗?

谢谢。

答案1

您的正则表达式不太正确。*表示“零次或多次出现”,因此https://mywebsite.com/test/home/与它匹配。更改(.*)(.+),表示“一次或多次出现”。那么您的 ProxyPassMatch 应该不再与该 URL 匹配。

或者直接删除 ProxyPassMatch 行,它没什么用,ProxyPass 行会自动处理 URL 。

ProxyPass /test/home/ https://example.com/
ProxyPassReverse /test/home/ https://example.com/

答案2

问题已解决。此特定问题的正确配置如下:

ProxyPass /test/home(.*)$ https://example.com/$1
ProxyPassReverse /test/home(.*)$ https://example.com/$1

删除斜线并添加通配符使我们能够代理后续的任何内容/test/home

谢谢大家的意见。

相关内容