繁体   English   中英

Apache-代理外部文件下载

[英]Apache - Proxy external files to download

考虑一下:

  • 我们有一个可以下载文件的外部服务器
  • 我们的网站(基于克隆)是下载它们的界面,我们尝试尽可能隐藏直接链接
  • jquery.fileDownload插件需要在下载时在文件上设置一个cookie

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

  • 原始文件: data-files-example.com/folder/subfolder/file.zip
  • 替换为: our-website-example.com/_downloads/folder/subfolder/file.zip

因此,我的案例缺少的部分是:如何设置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/$1" [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/$1 [L,P]

</VirtualHost>

我收到503 Service Unavailable

如何解决这个问题?

尝试反向代理。 只需确保在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 On。

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

以下代码至少将给定的原件重写为所需的目标URL:

<VirtualHost>
    SSLProxyEngine On
    RewriteEngine On

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

这需要激活模块mod_sslmod_proxymod_rewrite

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM