Welcome! Log In Create A New Profile

Advanced

Entire content is cached but when client pulls a byte range the entire file is sent

Wilson, Todd
March 03, 2016 01:56PM
Can the client pull a subset of the content from the cached content?

If it can pull a subset of the content via byte range requests can you point me to how to configure nginx to allow this...?


This is what is stored in cache on the nginx server.

[root@gemini-sled1 ac]# strings 81f71da53616b454815b570216041ac7 | more
KEY: GET/atis/vod/0x1051e69a101e9/d4_HDFD0075260002446163-8320285.mpg
HTTP/1.1 206 Partial Content
Server: Cisco/CDS Gateway/3.0
Connection: close
Content-Type: video/mpeg
Content-Length: 597600300
Content-Range: bytes 0-597600299/597600300
Cache-Control: public


But when the client attempt to pull a byte range the entire file is pulled.

curl -v -o /dev/null -r 1000-1001 http://10.157.66.194/atis/vod/0x1051e69a101e9/d4_HDFD0075260002446163-8320285.mpg
* About to connect() to 10.157.66.194 port 80
* Trying 10.157.66.194... connected
* Connected to 10.157.66.194 (10.157.66.194) port 80
> GET /atis/vod/0x1051e69a101e9/d4_HDFD0075260002446163-8320285.mpg HTTP/1.1
> Range: bytes=1000-1001
> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: 10.157.66.194
> Accept: */*
>
< HTTP/1.1 206 Partial Content
< Server: nginx/1.9.9
< Date: Thu, 03 Mar 2016 18:36:05 GMT
< Content-Type: video/mpeg
< Content-Length: 597600300
< Connection: keep-alive
< Content-Range: bytes 0-597600299/597600300
< Cache-Control: public
< Link: http://atisdemo.atge.twcable.com/atis/vod/d4_HDFD0075260002446163-8320285.mpg.mrm; rel="http://www.iif.atis.com/c2-media-resource-metadata"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 569M 100 569M 0 0 3758k 0 0:02:35 0:02:35 --:--:-- 4054k


We have nginx version 1.9.9 installed.

Nginx.conf

user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;


events {
worker_connections 1024;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$uri" "$request_uri" "$request_completion" "$cookie_session" "$http_cookie" "$http_host" "$host" "$server_port" "$proxy_add_x_forwarded_for" ';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;

#keepalive_timeout 65;

proxy_http_version 1.1;
proxy_cache_methods GET HEAD POST;
proxy_pass_request_headers on;
fastcgi_buffers 8 160k;
fastcgi_buffer_size 320k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

#proxy_cache_path /arroyo/nginxtest/sample/atis/vod levels=1:2 keys_zone=my-cache:80m
proxy_cache_path /cache1 levels=1:2 keys_zone=my-cache:80m max_size=2g inactive=6000m use_temp_path=off;
#proxy_temp_path /var/cache/tmp;

proxy_force_ranges on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_key "$request_method$request_uri";

proxy_cache my-cache;
proxy_cache_valid 200 206 1d;
proxy_cache_valid 404 1m;

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;

include /etc/nginx/conf.d/*.conf;

}

Default.conf

#resolve these upstream servers in /etc/hosts
upstream server_array {
server 10.155.202.125:80;
}

server {
listen 10.157.66.194:80; #local ip:port for nginx to listen
server_name atisdemo.atge.twcable.com;
max_ranges 4;
proxy_force_ranges on;
location / {
limit_rate_after 10k;
set $limit_rate 3750k;
proxy_intercept_errors on;
proxy_pass http://server_array;
error_page 302 = @locationupstream;
}
location @locationupstream{
rewrite_log on;
set $limit_rate 3750k;
set $upstreamlocation '$upstream_http_location';
proxy_set_header Range $http_range;
proxy_set_header "User-Agent" "Cisco/CDS Gateway/3.0";
proxy_pass_header Server;
proxy_pass $upstreamlocation;
proxy_force_ranges on;
}
}



Todd Wilson


________________________________

This E-mail and any of its attachments may contain Time Warner Cable proprietary information, which is privileged, confidential, or subject to copyright belonging to Time Warner Cable. This E-mail is intended solely for the use of the individual or entity to which it is addressed. If you are not the intended recipient of this E-mail, you are hereby notified that any dissemination, distribution, copying, or action taken in relation to the contents of and attachments to this E-mail is strictly prohibited and may be unlawful. If you have received this E-mail in error, please notify the sender immediately and permanently delete the original and any copy of this E-mail and any printout.
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

Entire content is cached but when client pulls a byte range the entire file is sent

Wilson, Todd March 03, 2016 01:56PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 149
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready