[英]Apache - Proxy external files to download
考虑一下:
我试图设置我们的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_ssl
, mod_proxy
和mod_rewrite
。
让我们知道这是否是您寻求的解决方案,如果不是,那么哪里出错了:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.