Apache Reverse Caching Proxy - 왜 캐싱되지 않습니까?
-
06-07-2019 - |
문제
광고 그래픽(gif, jpg, swf) 게재를 위한 역방향 캐싱 프록시를 설정하려고 합니다.프록싱이 제대로 작동하고 원본 서버에 요청을 보내지만 콘텐츠가 캐시되지 않는 이유를 알 수 없는 것 같습니다.내 현재 구성은 다음과 같습니다.목표는 /ca/ URI 접두사와 일치하는 모든 요청을 캐시하는 것입니다.원본 서버는 원본 서버 헤더에 설정된 Cache-control max-age=1 week, 파일 확장자 없음, 깨끗한 URL을 사용하여 파일을 제공합니다.
ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> <IfModule mod_disk_cache.c> CacheEnable disk / CacheRoot "/var/cache/mod_proxy" CacheDirLevels 3 CacheDirLength 5 CacheIgnoreCacheControl On </IfModule> RewriteCond %{REQUEST_URI} ^/ca/* RewriteRule ^/(.*)$ http://origin.webserver.com/$1 [P,L]
현재 제가 본 유일한 캐싱은 프록시 서버에서 액세스되는 로컬 파일의 캐싱입니다. 원본 서버에서 가져온 콘텐츠를 캐시하기 위해 누락된 것이 무엇인지 찾고 있습니다.
콘텐츠가 디스크의 위치가 아닌 원본 서버에서 가져오기 때문에 캐싱하지 않는 mod_cache와 관련이 있는지 궁금합니다.해당 접두사와 일치하는 모든 요청을 강제로 캐시하는 방법을 찾고 있습니다.
감사해요!
추신.- 정확히 다음과 같은 문제가 있는 것 같습니다. http://mail-archives.apache.org/mod_mbox/httpd-users/200901.mbox/%3C497F6ED3.7080606@gmail.com%3E.내 권한을 확인하고 디버그 메시지를 살펴보겠습니다...
해결책
이러한 지시문을 추가하면 캐시 메커니즘이 제대로 작동하는 것처럼 보였습니다.파일 시스템에서 직접적으로 대신 Symfony/PHP5를 사용하여 이미지를 제공하고 있기 때문에 원본 서버에서 보낸 만료 및 캐시 제어 헤더와 관련이 있다고 생각합니다.
<IfModule mod_disk_cache.c> CacheEnable disk / CacheRoot "/var/cache/mod_proxy" CacheDirLevels 3 CacheDirLength 5 CacheIgnoreCacheControl On CacheMaxFileSize 100000000 CacheIgnoreNoLastMod On CacheMaxExpire 1209600 CacheIgnoreQueryString On </IfModule>