NGINX отправляет диапазон байтов клиенту с настраиваемыми заголовками в запросе

Я хочу развернуть такой сценарий:

  1. Клиент отправляет заголовки start-index и Last-index в nginx. эти заголовки указывают диапазон файла, который нужен пользователю.
  2. Nginx должен проксировать запрос на файловый сервер и вернуть файл целиком.
  3. Nginx должен кэшировать весь файл.
  4. 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Директива добавляет заголовки к ответу. Поэтому я хочу знать, как добавить несколько заголовков именно в запрос клиента. Или как я могу отправить обратно указанные диапазоны пользователю?

0 ответов

Другие вопросы по тегам