nginx & Range header & proxy cache
Richard Kearsley
Richard.Kearsley at m247.com
Tue Sep 13 10:29:21 UTC 2011
Hi
If a Range request is sent to nginx proxy (e.g. header "Range: bytes=50-") and the file isn't in cache yet (cache MISS), the range is ignored and full file sent
When the file has been cached (cache HIT), Range request works as expected
Is this the intended behaviour?
Please consider the following example
# /usr/local/nginx/sbin/nginx -V
nginx: nginx version: nginx/1.0.6
nginx: built by gcc 4.4.5 (Debian 4.4.5-8)
nginx: configure arguments:
error_log logs/error-small.log;
worker_processes 2;
events
{
use epoll;
worker_connections 16384;
}
http
{
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
proxy_cache_path /var/cache/nginx levels=2:2:2 keys_zone=small:512m inactive=24h max_size=128G;
resolver 8.8.8.8;
server
{
listen 80;
server_name _;
location /
{
proxy_pass http://$http_X_Backend:$http_X_Backend_Port;
proxy_cache small;
proxy_cache_valid 200 302 10y;
proxy_cache_valid 404 10m;
proxy_cache_key $uri;
proxy_cache_min_uses 10;
proxy_cache_use_stale updating;
add_header X-Cached $upstream_cache_status;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html
{
root html;
}
}
}
# wget -SO /dev/null --header="X-Backend: download.thinkbroadband.com" --header="X-Backend-Port: 80" --header="Range: bytes=50-" localhost/5MB.zip
--2011-09-13 11:33:45-- http://localhost/5MB.zip
Resolving localhost... ::1, 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Server: nginx/1.0.6
Date: Tue, 13 Sep 2011 10:33:45 GMT
Content-Type: application/zip
Connection: keep-alive
Last-Modified: Mon, 02 Jun 2008 15:30:42 GMT
ETag: "11f000b-500000-44eb0adaf4c80"
Accept-Ranges: bytes
Content-Length: 5242880
X-Cached: MISS
Length: 5242880 (5.0M) [application/zip]
Saving to: `/dev/null'
(try 9 more times to get it cached)
# wget -SO /dev/null --header="X-Backend: download.thinkbroadband.com" --header="X-Backend-Port: 80" --header="Range: bytes=50-" localhost/5MB.zip
--2011-09-13 11:33:11-- http://localhost/5MB.zip
Resolving localhost... ::1, 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 206 Partial Content
Server: nginx/1.0.6
Date: Tue, 13 Sep 2011 10:33:11 GMT
Content-Type: application/zip
Content-Length: 5242830
Connection: keep-alive
Last-Modified: Mon, 02 Jun 2008 15:30:42 GMT
ETag: "11f000b-500000-44eb0adaf4c80"
X-Cached: HIT
Content-Range: bytes 50-5242879/5242880
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20110913/824d91b9/attachment-0001.html>
More information about the nginx
mailing list