DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7847.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7847
Reverse proxy server caching 304 responses from origin server
Summary: Reverse proxy server caching 304 responses from origin
server
Product: Apache httpd-1.3
Version: 1.3.24
Platform: PC
URL: http://www.dreo.dnd.ca http://www.drdc-rddc.dnd.ca
OS/Version: FreeBSD
Status: NEW
Severity: Normal
Priority: Other
Component: mod_proxy
AssignedTo: bugs@httpd.apache.org
ReportedBy: [EMAIL PROTECTED]
Hello,
To start with Some Background follows
We are using Apache 1.3.24 as a reverse proxy server with caching enabled for
some internal web sites.
We discovered that when we attempt to force a reload of the web page from the
origin server using our web browser, we are simply getting back a blank page.
This problem is reproducable.
This works in IE 5.5 and Mozilla 0.9.9 and Netscape 4.79.
To issue the reload from the origin server from IE 5.5, type Ctrl-F5.
To issue the reload from the origin server from Mozilla and Netscape, hold
Ctrl and click the Reload button. By doing this, it sets Cache-Control in
the HTTP/1.1 request to No cache.
We found that this only works when the origin server is MS IIS 4.0. When the
origin server is an Apache server, the web page is refreshed from the cache of
the reverse proxy server.
More Detailed Information
The Internal origin server is an MS IIS 4.0 for www.dreo.dnd.ca. This will work
for any page that is cached on the reverse proxy server. The page we will use
for testing is http://www.dreo.dnd.ca/ which has already been previously cached
on the reverse proxy server.
Using a sniffer on the reverse proxy server we determined what the HTTP/1.1
request was from the browser client:
GET / HTTP/1.1
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE.5.5; Windows.NT 4.0)
Host: www.dreo.dnd.ca.
Connection: Keep-Alive
Cache-Control: no-cache
When the reverse proxy receives this request it forwards it onto the internal
origin server with a couple of additional fields (why does it send an HTTP/1.0
request instead of the original HTTP/1.1 request?) :
GET / HTTP/1.0
Host: www.dreo.dnd.ca
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Cache-Control: no-cache
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)
If-Modified-Since: Wed, 08 Nov 2000 18:10:04 GMT
If-None-Match: c077721eaf49c01:1364
X-Forwarded-For: xxx.xxx.244.1
Connection: close
The origin server then returns the following:
HTTP/1.1
304 Not Modified
Server: Microsoft-IIS/4.0
Date: Thu, 04 Apr 2002 16:05:15 GMT
Content-Location: http://www.dreo.dnd.ca/index.html
ETag: c077721eaf49c01:1364
Content-Length: 0
This 304 Not Modified is then cached on the reverse proxy server and the
following is served back to the client with no HTML content from the previously
cached page (a blank page is displayed as a result):
HTTP/1.1
200 OK
Date: Thu, 04 Apr 2002 16:05:34 GMT
Server: Apache/1.3.24 (Unix)
Accept-Ranges: bytes
Content-Length: 0
Content-Location: http://www.dreo.dnd.ca/index.html
Content-Type: text/html
ETag:.c077721eaf49c01:1364
Last-Modified: Wed, 08 Nov 2000 18:10:04 GMT
X-Cache: HIT from www.dreo.dnd.ca (with.revalidation)
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
When the Internal origin server is Apache, the difference in the 304 Not
Modified returned to the reverse proxy server is there is no Content-Length:
0 header returned.
The error_log file (with debugging enabled) on the reverse proxy server shows
the following:
[Fri Apr 5 15:51:37 2002] [debug] proxy_cache.c(1018): Request for
http://www.dreo.dnd.ca/, pragma_req=(null), ims=0
[Fri Apr 5 15:51:37 2002] [debug] proxy_util.c(1373): File
/var/proxy/drdc/3G/mQ/sM/[EMAIL PROTECTED] not found
[Fri Apr 5 15:51:37 2002] [debug] proxy_cache.c(1271): Local copy not present
or expired. Declining.
[Fri Apr 5 15:51:38 2002] [debug] proxy_cache.c(1457): Expiry date is 0
[Fri Apr 5 15:51:38 2002] [debug] proxy_cache.c(1468): Expiry date calculated
1018126298
[Fri Apr 5 15:51:38 2002] [debug] proxy_cache.c(1575): Create temporary file
/var/proxy/drdc/tmpN80355
[Fri Apr 5 15:51:38 2002] [debug] proxy_http.c(537): Content-Type: text/html
[Fri Apr 5 15:51:51 2002] [debug] proxy_cache.c(1018): Request for
http://www.dreo.dnd.ca/, pragma_req=(null), ims=0
[Fri Apr 5 15:51:51 2002] [debug] proxy_cache.c(1271): Local copy not present
or expired. Declining.
[Fri Apr 5 15:51:51 2002] [debug] proxy_cache.c(1441): Reusing cached last
modified
[Fri Apr 5 15:51:51 2002] [debug] proxy_cache.c(1457): Expiry date is 0