Как кэшировать переписанный URL с помощью mod_cache, mod_rewrite и mod_proxy?
Я использую веб-сервер Apache в контейнере Docker в качестве обратного прокси-сервера кэша. Версия
Server version: Apache/2.4.10 (Debian)
Server built: Nov 28 2015 14:05:48
Следующие модули активированы:
/usr/sbin/a2enmod proxy proxy_http
/usr/sbin/a2enmod rewrite
/usr/sbin/a2enmod cache
/usr/sbin/a2enmod cache_disk
mod_cache настраивается в etc / apache2 / mods-enabled / cache_disk.conf с помощью
<IfModule mod_cache_disk.c>
CacheRoot /var/cache/apache2/mod_cache_disk
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
</IfModule>
В /etc/apache2/sites-enabled/000-default.conf поведение обратного прокси-сервера настраивается с перезаписью URL:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
LogLevel debug rewrite:trace3
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteRule ^(.*)test$ http://192.168.99.100:8080$1geo [P]
ProxyPass / http://192.168.99.100:8080/
ProxyPassReverse / http://192.168.99.100:8080/
</VirtualHost>
Моя цель - кэшировать переписанные URL. В этом случае / samplecache / test следует обрабатывать так же, как / samplecache / geo, и кэшировать только один раз, поскольку ответ такой же. Но похоже, что mod_cache всегда принимает URL запроса, а не переписанный URL, т.е.
curl -v http://192.168.99.100:8090/samplecache/test
curl -v http://192.168.99.100:8090/samplecache/geo
доставить тот же результат из бэкэнда, но они кэшируются дважды. В файле error.log я вижу, что / sample / test используется как ключ кеша вместо переписанного /samplecache/geo:
[Sun May 01 16:17:05.351716 2016] [cache:debug] [pid 9:tid 139956735403776] mod_cache.c(1332): [client 192.168.99.1:52687] AH00769: cache: Caching url: /samplecache/test
[Sun May 01 16:17:05.352121 2016] [cache_disk:debug] [pid 9:tid 139956735403776] mod_cache_disk.c(1350): [client 192.168.99.1:52687] AH00737: commit_entity: Headers and body for URL http://192.168.99.100:8090/samplecache/test? cached.
Как использовать перезаписанный URL-адрес в качестве ключа кэша, чтобы он кэшировался только один раз.