Назад | Перейти на главную страницу

Настройка Apache в качестве прямого прокси с кэшированием

Я хочу настроить прокси-сервер 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>