我的文件以不带扩展名的哈希名称保存。但我确定它是 RIFF 文件,如 WAV、MP3。如何使用 nginx 添加 MIME 取决于它的 RIFF 标头?
编辑:大部分文件是 mp3 格式,所以我使用下面的位置块。
config
location /audio/ {
#default_type "audio/mpeg";
}
我的文件以不带扩展名的哈希名称保存。但我确定它是 RIFF 文件,如 WAV、MP3。如何使用 nginx 添加 MIME 取决于它的 RIFF 标头?
编辑:大部分文件是 mp3 格式,所以我使用下面的位置块。
config
location /audio/ {
#default_type "audio/mpeg";
}
如何添加 MIME 取决于使用 nginx 的 RIFF 标头?
你不能。Nginx 不支持检查文件,然后根据其内容发送适当的标头。
但是,您可以执行以下几个选项:
1) 将请求发送到您的网络服务器,检查代码中的文件,然后使用将X-Accel 标头发送到 nginxheader("X-Accel-Redirect: ".$filenameToProxy);
这将使 nginx 为文件提供服务,只需少量处理时间来检查文件。
2) 在文件的 URL 中保留扩展名,即使它存储时没有扩展名。当您提供指向文件的链接时,您应该保留附加的扩展名,因为这允许用户查看将要提供的文件类型,并且它还允许 nginx 提供适当的 mime 类型。(我想虽然我还在测试这个)
location ~* /audio/(.*)(wav|mp3|avi|ani) {
add_header Content-Type $content_type
try_files /audio/$1
}
3)只需为所有文件保留扩展名。严重地。为什么要去掉文件的扩展名?
RIFF 是一种 WAV 文件,因此您应该能够使用:
wav audio/wav
wav audio/x-wav
下面的呢?它不会产生预期的效果吗?
location /audio/ {
default_type audio/mpeg;
}
还是以下?
location /audio/ {
default_type audio/wav;
}