我的文件以其散列名称保存而没有扩展名。但我确定它是RIFF文件,如WAV,MP3。如何使用nginx添加MIME取决于它的RIFF标题?
编辑: 大部分文件都是mp3格式,所以我使用下面的位置块。
config
location /audio/ {
#default_type "audio/mpeg";
}
答案 0 :(得分:4)
如何使用nginx添加MIME依赖于它的RIFF标题?
你做不到。 Nginx不支持检查文件,然后根据其内容发送相应的标头。
但是你可以做几个选择:
1)将请求发送到您的网络服务器,检查代码中的文件,然后使用X-Accel header发送给nginx header("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)只需为所有文件保留扩展名即可。认真。为什么要剥离文件的扩展名?
答案 1 :(得分:1)
RIFF是一种WAV文件,因此您应该可以使用:
wav audio/wav
wav audio/x-wav
答案 2 :(得分:1)
以下怎么样?它不会产生预期的效果吗?
location /audio/ {
default_type audio/mpeg;
}
或以下?
location /audio/ {
default_type audio/wav;
}