將 Apache 設置為具有記憶體的正向代理
我想用記憶體配置 apache 轉發代理。我有一些客戶端必須不時從網際網路上下載一些大文件,我希望通過這個 apache 代理來完成,以便將這些大文件記憶體在磁碟上並從記憶體中返回它們。
我已經設法配置代理,但記憶體不起作用。我啟用了cache、mem_cache、file_cache模組。我的記憶體代理虛擬主機有以下配置:
<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 配置為使用此代理。我從http://download.java.net/jdk8/archive/b128/binaries/jdk-8-fcs-bin-b128-linux-i586-01_feb_2014.tar.gz下載了一個 zip 文件 ,大約需要 5 分鐘。我在這個事件的proxy-access.log中得到的唯一一行是:
"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/cache/apache2/mod_disk_cache*文件夾時,那裡什麼都沒有。下次我下載相同的文件時,它也需要同樣的 5 分鐘,儘管在我們的本地網路中速度要快得多 - 這意味著它會再次從網際網路重新下載。
我怎樣才能讓它記憶體?
我已經看到這個將 Apache 設置為帶有記憶體的正向代理問題,請閱讀What Can be Cached? - 請求或響應中沒有“授權”標頭(使用wireshark檢查)。所以在我看來它應該被記憶體。它也不應該受到這個錯誤的影響,因為 apache 版本是2.2.22-1ubuntu1而不是2.4.3。
它最初沒有正確記錄,但 CacheEnable 不再隱式應用於轉發代理。現在有一個註釋和更新的範例。
http://httpd.apache.org/docs/2.4/mod/mod_cache.html#cacheenable
編輯以不在連結中隱藏答案:如
CacheEnable disk http://
我不得不特意去做
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>