Hello, Recently, we found if we use nginx slice module , and upstream server is such as a static file server, nginx will response duplicated `Accept-Ranges` headers if client request is not included range header.
the minimal config example as follow: ``` server { listen 80; server_name _; default_type text/html; location /get_file { slice 256k; proxy_set_header Range $slice_range; proxy_pass http://127.0.0.1:8899; } } ``` use curl to get 1mb file: ``` curl -s http://localhost/get_file/1mb.test -D- -o /dev/null HTTP/1.1 200 OK Date: Mon, 06 Jul 2020 10:32:58 GMT Content-Type: application/octet-stream Content-Length: 1048576 Connection: keep-alive Last-Modified: Mon, 06 Jul 2020 07:34:23 GMT Cache-Control: public, max-age=43200 Expires: Mon, 06 Jul 2020 22:32:58 GMT ETag: "1594020863.76-1048576-4019326287" Accept-Ranges: bytes Accept-Ranges: bytes ``` but if I add range header to curl request, will get expected response. Then I review the ngx_http_range_filter_module, in `goto next_filter`( line 253) , should we handle NGX_HTTP_OK response? like: ``` next_filter: if (r->headers_out.status == NGX_HTTP_OK) { r->headers_out.accept_ranges = NULL; return ngx_http_next_header_filter(r); } r->headers_out.accept_ranges = ngx_list_push(&r->headers_out.headers); if (r->headers_out.accept_ranges == NULL) { return NGX_ERROR; } r->headers_out.accept_ranges->hash = 1; ngx_str_set(&r->headers_out.accept_ranges->key, "Accept-Ranges"); ngx_str_set(&r->headers_out.accept_ranges->value, "bytes"); return ngx_http_next_header_filter(r); ``` I am confused if it is a bug? Posted at Nginx Forum: https://forum.nginx.org/read.php?2,288569,288569#msg-288569 _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx