Я хочу настроить прокси-сервер apache с кешированием. У меня есть клиенты, которым время от времени приходится загружать некоторые большие файлы из Интернета, и я бы хотел, чтобы это выполнялось через этот прокси-сервер apache, чтобы он кешировал эти большие файлы на диск и возвращал их из кеша.
Мне удалось настроить прокси, но кеширование не работает. у меня есть тайник, 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 на использование этого прокси. Я скачиваю zip-файл из http://download.java.net/jdk8/archive/b128/binaries/jdk-8-fcs-bin-b128-linux-i586-01_feb_2014.tar.gz, что занимает около 5 минут. Единственная линия, в которую я попал прокси-доступ.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 в качестве прямого прокси с кэшированием вопрос, читать Что можно кэшировать? - ни в запросе, ни в ответе нет заголовка «Авторизация» (проверено с помощью wirehark). Так что мне кажется, что это должно быть кешировано. На него также не должны влиять эта ошибка, поскольку версия 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>