NGINX отправляет диапазон байтов клиенту с настраиваемыми заголовками в запросе
Я хочу развернуть такой сценарий:
- Клиент отправляет заголовки start-index и Last-index в nginx. эти заголовки указывают диапазон файла, который нужен пользователю.
- Nginx должен проксировать запрос на файловый сервер и вернуть файл целиком.
- Nginx должен кэшировать весь файл.
- Nginx должен вернуть клиенту запрошенный диапазон. (в начальном индексе и последнем индексе)
proxy_cache_path /var/cache/nginx/test levels=1:2 keys_zone=cdncache:10m max_size=10g use_temp_path=off;
proxy_cache_key $uri$slice_range;
proxy_cache_valid 200 302 5m;
log_format nginx_log '$uri|$body_bytes_sent|$time_iso8601|$status';
server {
listen 80;
server_name cdnrb1.iranlms.ir;
ssl_certificate "/etc/pki/nginx/cdn/cdn.cert";
ssl_certificate_key "/etc/pki/nginx/cdn/cdn.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
proxy_cache_lock on;
proxy_cache_lock_age 15s;
proxy_cache_lock_timeout 5m;
location /test {
proxy_cache cdncache;
proxy_cache_valid 200 1d;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
add_header X-Cache-Status $upstream_cache_status;
add_header Accept-Ranges bytes;
add_header Range $http_range;
#add_header Range bytes=$http_start_index-$http_last_index
resolver 127.0.0.11; # docker dns resolver
proxy_pass http://10.212.192.40:8082/output.txt;
access_log /var/log/nginx/cdn_access.log nginx_log;
}
}
Если я отправлю-r
вариант вместе сcurl
команда (curl -r 0-100 ...
) Я получаю только запрошенную часть файла. Кроме того, я знаю этоadd_header
Директива добавляет заголовки к ответу. Поэтому я хочу знать, как добавить несколько заголовков именно в запрос клиента. Или как я могу отправить обратно указанные диапазоны пользователю?