我正在运行 Apache/2.4.38 (Raspbian)。请求 HTML 和 PHP 时一切正常。当我请求 .jpg 文件时,apache 似乎跳过了响应标头开头的几个字节,并且在有效负载的末尾包含了一些垃圾。
具体来说,GET /images/2.jpg HTTP/1.1
响应如下所示:
21 19:00:13 GMT
ETag: "23fa-5cf6e52077278"
Accept-Ranges: bytes
Content-Length: 9210
Keep-Alive: timeout=5, max=97
Connection: Keep-Alive
Content-Type: image/jpeg
同一会话中的先前响应看起来正确,例如:
HTTP/1.1 200 OK
Date: Mon, 01 Nov 2021 19:08:49 GMT
Server: Apache/2.4.38 (Raspbian)
...
这只发生在 JPEG 图像上。图像文件本身没有问题,我可以用 gwenview 查看它。无论我尝试使用 chrome、wget 还是手动使用 netcat,都会发送相同的错误响应。总是相同的错误响应。
这是怎么发生的?我该如何解决?
答案1
在专门搜索“apache jpeg cifs share”后,我找到了答案。这是一个已知的错误,导致我的 mmap 无法处理 CIFS 共享上的文件。解决方案是EnableMMAP off
在 apache 配置中为 CIFS 共享上的所有文件夹进行设置。