Apache - 代理外部文件下载

Apache - Proxy external files to download

考虑一下:

我正在尝试设置我们的 Apache 配置来替换这样的链接:

因此,我的案例中缺少的部分是:如何将 Apache 设置为这样工作?

我正在尝试:

NameVirtualHost *:80
<VirtualHost :80>
    ServerAdmin email@our-website-example.com
    ServerName our-website-example.com

    RewriteEngine On
    RewriteRule "^/_downloads(.)$" "https://data-files-example.com/" [P] 

    RewriteCond %{REQUEST_METHOD} ^(PUT|DELETE|PROPFIND|OPTIONS|TRACE|PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK)$

    RewriteRule .* - [F,L]
    RewriteRule ^/(.*) http://127.0.0.1:/VirtualHostBase/http/data-files-example.com:80/my_plone_website/VirtualHostRoot/ [L,P]

</VirtualHost>

我收到了503 Service Unavailable

如何解决这个问题?

以下代码至少将您给定的原件-重写为您想要的目标-URL:

<VirtualHost>
    SSLProxyEngine On
    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^our-website-example.com$
    RewriteRule   "^/_downloads(.*)$"  "https://data-files-example.com/"  [P,L]
</VirtualHost>

这需要激活模块 mod_sslmod_proxymod_rewrite

让我们知道这是否是您寻求的解决方案,如果不是,哪里出了问题:)

尝试反向代理。只要确保在你的 Apache 配置中启用 mod_proxy 和 mod_proxy_http 并且你的代理规则设置在 Plone 的 VirtualHostBase 规则之前,如果模式是根斜杠。

ProxyPass         /_downloads     http://data-files-example.com
ProxyPassReverse  /_downloads     http://data-files-example.com

代理到 https 后端时,您还需要安装 mod_ssl 并启用 SSLProxyEngine 指令。

SSLProxyEngine On
ProxyPass         /_downloads     https://data-files-example.com
ProxyPassReverse  /_downloads     https://data-files-example.com