回答
收藏
分享
举报
Nginx 在获取缓存文件时Body被截断
提问于2020-07-23 17:04

浏览 4.9k

Nginx 设置了 proxy cache。在请求文件时 body 被截断,但是 access 日志是 HIT。

"-" "-" - - 21.264 [time] 200 "GET /filePath&tm=300 HTTP/1.1" 41692520 "-" "Go-http-client/1.1" "-" "HIT"
"-" "-" - - 63.975 [time] 200 "GET /filePath&tm=300 HTTP/1.1" 13434629 "-" "Go-http-client/1.1" "-" "HIT"

请问会是什么原因呢?

已修改于2023-03-17 02:12



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

是不是HTTP Range请求?

赞同

3

回复举报

回答于2020-07-25 10:57



回复陶辉
回复
Salted_fish回复了
不是Range请求的,client 端会一直读 body 直到超时,且读到长度小于 nginx 返回的长度。

0

回复举报

回答于2020-07-27 02:45



回复Salted_fish
回复
陶辉回复了
能复现的话,建议在开发环境,把debug日志打开,包括configure时加入--with-debug,以及在location中加入error_log ... debug; 因为在debug日志下,Nginx会把每次发的一批body字符,打印出统计信息。 你观察下,究竟发了多少字节,最后1次间隔了多长时间,又是谁先关连接的,client还是Nginx。 不排除是网络问题。

0

回复举报

回答于2020-07-27 02:50



回复陶辉
回复
提问者
Salted_fish
这家伙很懒还未留下介绍~
0
文章
1
问答
0
粉丝
相关问答

你应该有一个默认的服务器来捕捉所有的,你可以返回404或更好地不响应(会节省一些带宽),通过返回444它是nginx特定的HTTP响应,只需关闭连接并返回任何内容  

点赞 0
浏览 3.9k

使用keepalive建立长连接池:

upstream http_backend {
    server 127.0.0.1:8080;

    keepalive 16;
}

server {
    ...

    location /http/ {
        proxy_pass http://http_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        ...
    }
}
点赞 0
浏览 5.4k