Nginx:对于Http范围请求ie 206,在x重定向链的情况下,会阻止自定义头

Nginx:对于Http范围请求ie 206,在x重定向链的情况下,会阻止自定义头,nginx,Nginx,当我们希望将Etag作为范围请求(即Http 206)的Http响应的一部分通过X重定向链传播时,我们遇到了这种奇怪的行为。对于非200响应,nginx似乎通过X重定向过滤掉了作为最终响应的一部分的任何附加Costude headers/tmp变量。 请建议解决此问题 下面是调试模式下的日志数据,用于正常vs范围请求清除,显示正在筛选的自定义头 Without Range : 2013/04/16 04:08:22 [debug] 23457#0: *385 event timer del:

当我们希望将Etag作为范围请求(即Http 206)的Http响应的一部分通过X重定向链传播时,我们遇到了这种奇怪的行为。对于非200响应,nginx似乎通过X重定向过滤掉了作为最终响应的一部分的任何附加Costude headers/tmp变量。 请建议解决此问题

下面是调试模式下的日志数据,用于正常vs范围请求清除,显示正在筛选的自定义头

Without Range :

2013/04/16 04:08:22 [debug] 23457#0: *385 event timer del: 11: 1366110562151
2013/04/16 04:08:22 [debug] 23457#0: *385 event timer add: 11: 300000:1366110802151
2013/04/16 04:08:22 [debug] 23457#0: *385 http run request: "get_file?path=/Shared/Documents/loader.html"
2013/04/16 04:08:22 [debug] 23457#0: *385 http upstream check client, write event:1, "/v2_0/get_file"
2013/04/16 04:08:22 [debug] 23457#0: *385 http upstream recv(): -1 (11: Resource temporarily unavailable)
2013/04/16 04:08:22 [debug] 23457#0: *385 http upstream request: "/v2_0/get_file?path=/Shared/Documents/loader.html"
2013/04/16 04:08:22 [debug] 23457#0: *385 http upstream process header
2013/04/16 04:08:22 [debug] 23457#0: *385 malloc: 000000000E8621C0:32768
2013/04/16 04:08:22 [debug] 23457#0: *385 recv: fd:11 1229 of 32646
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy status 200 "200 OK"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Last-Modified: Tue, 16 Apr 2013 09:47:42 GMT"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Etag: 0853bce8-bf84-4cc4-9c7e-d4182bafafad"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Date: Tue, 16 Apr 2013 11:08:22 GMT"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Server: CherryPy/3.1.2"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Connection: close"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Content-Disposition: attachment;filename="loader.html""

2013/04/16 04:08:22 [debug] 23457#0: *385 http script complex value
2013/04/16 04:08:22 [debug] 23457#0: *385 http script set $compressed
2013/04/16 04:08:22 [debug] 23457#0: *385 http script complex value
2013/04/16 04:08:22 [debug] 23457#0: *385 http script set $serve_decompressed
2013/04/16 04:08:22 [debug] 23457#0: *385 http script complex value
2013/04/16 04:08:22 [debug] 23457#0: *385 http script var: "0853bce8-bf84-4cc4-9c7e-d4182bafafad"
2013/04/16 04:08:22 [debug] 23457#0: *385 http script set $etag
2013/04/16 04:08:22 [debug] 23457#0: *385 http script complex value
2013/04/16 04:08:22 [debug] 23457#0: *385 http script var: "Tue, 16 Apr 2013 09:47:42 GMT"
2013/04/16 04:08:22 [debug] 23457#0: *385 http script set $last_modified
2013/04/16 04:08:22 [debug] 23457#0: *385 http script complex value
2013/04/16 04:08:22 [debug] 23457#0: *385 http script var: "205"
2013/04/16 04:08:22 [debug] 23457#0: *385 http script set $expected_size
2013/04/16 04:08:22 [debug] 23457#0: *385 http script complex value
2013/04/16 04:08:22 [debug] 23457#0: *385 http script var: "205"
2013/04/16 04:08:22 [debug] 23457#0: *385 http script set $actual_size
--
2013/04/16 04:08:22 [debug] 23457#0: *385 malloc: 000000000E906930:32768
2013/04/16 04:08:22 [debug] 23457#0: *385 posix_memalign: 000000000E90E940:4096 @16
2013/04/16 04:08:22 [debug] 23457#0: *385 recv: fd:11 350 of 32638
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy status 200 "200 OK"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Server: Apache-Coyote/1.1"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Accept-Ranges: bytes"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Content-Length: 205"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Date: Tue, 16 Apr 2013 11:08:22 GMT"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header: "Connection: close"
2013/04/16 04:08:22 [debug] 23457#0: *385 http proxy header done
2013/04/16 04:08:22 [debug] 23457#0: *385 http script var: "0853bce8-bf84-4cc4-9c7e-d4182bafafad"
2013/04/16 04:08:22 [debug] 23457#0: *385 http script var: "0853bce8-bf84-4cc4-9c7e-d4182bafafad"
2013/04/16 04:08:22 [debug] 23457#0: *385 http script var: "Tue, 16 Apr 2013 09:47:42 GMT"
2013/04/16 04:08:22 [debug] 23457#0: *385 HTTP/1.1 200 OK
Server: nginx/1.0.4
Date: Tue, 16 Apr 2013 11:08:22 GMT
Content-Type: text/html;charset=ISO-8859-1
Connection: keep-alive
Content-Disposition: attachment;filename="loader.html"
Accept-Ranges: none
Content-Length: 205
Etag: 0853bce8-bf84-4cc4-9c7e-d4182bafafad
Last-Modified: Tue, 16 Apr 2013 09:47:42 GMT
=================================================================================


With Range :

2013/04/16 04:07:35 [debug] 23457#0: *373 event timer del: 11: 1366110515893
2013/04/16 04:07:35 [debug] 23457#0: *373 event timer add: 11: 300000:1366110755894
2013/04/16 04:07:35 [debug] 23457#0: *373 http run request: "/v2_0/get_file?path=/Shared/Documents/loader.html"
2013/04/16 04:07:35 [debug] 23457#0: *373 http upstream check client, write event:1, "/v2_0/get_file"
2013/04/16 04:07:35 [debug] 23457#0: *373 http upstream recv(): -1 (11: Resource temporarily unavailable)
2013/04/16 04:07:35 [debug] 23457#0: *373 http upstream request: "/v2_0/get_file?path=/Shared/Documents/loader.html"
2013/04/16 04:07:35 [debug] 23457#0: *373 http upstream process header
2013/04/16 04:07:35 [debug] 23457#0: *373 malloc: 000000000E8621C0:32768
2013/04/16 04:07:35 [debug] 23457#0: *373 recv: fd:11 1258 of 32646
2013/04/16 04:07:35 [debug] 23457#0: *373 http proxy status 200 "200 OK"
2013/04/16 04:07:35 [debug] 23457#0: *373 http proxy header: "Etag: 0853bce8-bf84-4cc4-9c7e-d4182bafafad"
2013/04/16 04:07:35 [debug] 23457#0: *373 http proxy header: "Date: Tue, 16 Apr 2013 11:07:35 GMT"
2013/04/16 04:07:35 [debug] 23457#0: *373 http proxy header: "Server: CherryPy/3.1.2"
2013/04/16 04:07:35 [debug] 23457#0: *373 http proxy header: "Connection: close"
2013/04/16 04:07:35 [debug] 23457#0: *373 http proxy header: "Content-Disposition: attachment;filename="loader.html""


2013/04/16 04:07:35 [debug] 23457#0: *373 http script complex value
2013/04/16 04:07:35 [debug] 23457#0: *373 http script set $compressed
2013/04/16 04:07:35 [debug] 23457#0: *373 http script complex value
2013/04/16 04:07:35 [debug] 23457#0: *373 http script set $serve_decompressed
2013/04/16 04:07:35 [debug] 23457#0: *373 http script complex value
2013/04/16 04:07:35 [debug] 23457#0: *373 http script var: "0853bce8-bf84-4cc4-9c7e-d4182bafafad"
2013/04/16 04:07:35 [debug] 23457#0: *373 http script set $etag
2013/04/16 04:07:35 [debug] 23457#0: *373 http script complex value
2013/04/16 04:07:35 [debug] 23457#0: *373 http script var: "Tue, 16 Apr 2013 09:47:42 GMT"
2013/04/16 04:07:35 [debug] 23457#0: *373 http script set $last_modified
2013/04/16 04:07:35 [debug] 23457#0: *373 http script complex value
2013/04/16 04:07:35 [debug] 23457#0: *373 http script var: "205"
2013/04/16 04:07:35 [debug] 23457#0: *373 http script set $expected_size
2013/04/16 04:07:35 [debug] 23457#0: *373 http script complex value
2013/04/16 04:07:35 [debug] 23457#0: *373 http script var: "205"
2013/04/16 04:07:35 [debug] 23457#0: *373 http script set $actual_size

2013/04/16 04:05:18 [debug] 23457#0: *352 http proxy status 206 "206 Partial Content"
2013/04/16 04:05:18 [debug] 23457#0: *352 http proxy header: "Server: Apache-Coyote/1.1"
2013/04/16 04:05:18 [debug] 23457#0: *352 http proxy header: "Accept-Ranges: bytes"
2013/04/16 04:05:18 [debug] 23457#0: *352 http proxy header: "Content-Range: bytes 10-20/205"
2013/04/16 04:05:18 [debug] 23457#0: *352 http proxy header: "Content-Length: 11"
2013/04/16 04:05:18 [debug] 23457#0: *352 http proxy header: "Date: Tue, 16 Apr 2013 11:05:18 GMT"
2013/04/16 04:05:18 [debug] 23457#0: *352 http proxy header: "Connection: close"
2013/04/16 04:05:18 [debug] 23457#0: *352 http proxy header done
2013/04/16 04:05:18 [debug] 23457#0: *352 HTTP/1.1 206 Partial Content
Server: nginx/1.0.4`enter code here`
Date: Tue, 16 Apr 2013 11:05:18 GMT
Content-Type: text/html;charset=ISO-8859-1
Connection: keep-alive
Content-Disposition: attachment;filename="loader.html"
Accept-Ranges: none
Content-Range: bytes 10-20/205
Content-Length: 11

你的两个回答都是正确的

Accept-Ranges: none
表示您的服务器不支持范围请求

参考:

不知道你的nginx配置。因为只有http 1.1支持范围请求,我猜您可能错过了这个指令:

 proxy_http_version 1.1;
Nginx代理模块默认使用http 1.0。但是,如果您的上游服务器支持http 1.1(应该支持),建议使用1.1以获得更好的性能。
有关详细信息,请参阅参考资料:

我在aria2c中遇到了无效范围标头错误,这对我很有帮助,谢谢
 proxy_http_version 1.1;