Apache:使用 RewriteRule 作为代理

Apache:使用 RewriteRule 作为代理

我正在尝试在某些共享托管解决方案上托管我的前端,但遇到一些问题。
注意:这是不是应该是权威的托管解决方案,但通过这种方式我能够更准确地手动测试。

我的前端需要访问位于不同服务器上的某些 API。为了方便(身份验证等),我想将我的 API 请求代理到后端服务器。
但是,在共享托管环境中,我的选择受到限制:

  • 我无法修改VirtualHost配置
  • mod_proxy似乎已被禁用,因此ProxyPass不允许ProxyPassReverse
  • mod_rewrite似乎已启用

我考虑过使用它
RewriteRule ^/api/(.*)$ https://example.com/$1
作为某种代理,但担心它不会按预期发挥作用......

我愿意接受任何建议并且“不要这样做!”

答案1

如果没有 mod_proxy,则无法使用 Apache 创建代理。可以P与 mod_rewrite 一起使用的标志(在RewriteRule指令上)使用 mod_proxy。

RewriteRule ^/api/(.*)$ https://example.com/$1

据推测,你仅限于.htaccess,在这种情况下,上述RewriteRule 图案(带有斜杠前缀)无论如何都不会匹配,因此该指令不会执行任何操作。但是,即使在更正了图案,当您在中指定绝对 URL 时RewriteRule 代换它将隐式触发外部 302 重定向(除非请求是通过 mod_proxy 发送的) - 我认为这不是您所需要的。

我只能建议你用服务器端代码来管理这个“代理”。例如,你可以使用 CURL 来“代理”请求吗?

相关内容