将 Apache 设置为具有缓存的正向代理

将 Apache 设置为具有缓存的正向代理

我想配置带有缓存的 apache 正向代理。我有一些客户端需要不时从互联网上下载一些大文件,我希望通过这个 apache 代理来完成,这样它就可以将这些大文件缓存在磁盘上并从缓存中返回它们。

我已经成功配置了代理,但缓存不起作用。我有缓存内存缓存文件缓存模块已启用。我的缓存代理虚拟主机的配置如下:

<VirtualHost *:80>
ProxyRequests On
ProxyVia On

<Proxy *>
Order deny,allow
Deny from all
Allow from all
</Proxy>

CacheEnable disk /
CacheMaxFileSize 10000000000
CacheMinFileSize 1000000
CacheRoot "/var/cache/apache2/mod_disk_cache/"
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheIgnoreQueryString On
EnableSendfile On
CacheDefaultExpire 7200

CacheIgnoreNoLastMod On
CacheStorePrivate On
CacheStoreNoStore On

ServerName my-proxy

ErrorLog "/var/log/apache2/proxy-error.log"
CustomLog "/var/log/apache2/proxy-access.log" common
</VirtualHost>

为了测试目的,我将 Firefox 配置为使用此代理。我从以下网址下载了一个 zip 文件 http://download.java.net/jdk8/archive/b128/binaries/jdk-8-fcs-bin-b128-linux-i586-01_feb_2014.tar.gz,大约需要 5 分钟。我听到的唯一一句台词代理访问日志本次活动的主题是:

"GET http://download.java.net/jdk8/archive/b128/binaries/jdk-8-fcs-bin-b128-linux-i586-01_feb_2014.tar.gz HTTP/1.1" 200 115883719

当我后来检查/var/缓存/apache2/mod_disk_cache文件夹,那里什么都没有。下次我下载同一个文件时,也需要同样的 5 分钟,尽管在我们的本地网络中速度要快得多 - 这意味着它再次从互联网上重新下载。

我怎样才能使其缓存?

我见过将 Apache 设置为具有缓存的正向代理提问,阅读什么可以缓存?- 请求或响应中没有“授权”标头(使用 wireshark 检查)。所以在我看来它应该被缓存。它也不应该受到这个错误,因为 apache 版本是2.2.22-1ubuntu1不是2.4.3.

答案1

最初没有正确记录,但 CacheEnable 不再隐式适用于正向代理。现在有一个说明和更新的示例。

http://httpd.apache.org/docs/2.4/mod/mod_cache.html#cacheenable

编辑以不隐藏链接中的答案:如CacheEnable disk http://

答案2

我必须专门执行CacheQuickHandler off,因为ProxyPass里面有Location。只有当它正确无误后,缓存才会启动。示例:

CacheQuickHandler off                      
CacheRoot /var/cache/apache2

<Location "/wp-content/uploads/_papaya">
    CacheEnable disk
    ProxyPass "https://remote.papaya/wp-content/uploads"
</LocationMatch>

相关内容