如何使用Nginx按文件RIFF标头设置MIME?

时间:2013-03-19 18:33:44

标签: nginx

我的文件以其散列名称保存而没有扩展名。但我确定它是RIFF文件,如WAV,MP3。如何使用nginx添加MIME取决于它的RIFF标题?

编辑: 大部分文件都是mp3格式,所以我使用下面的位置块。

config
location /audio/ {
     #default_type "audio/mpeg";
}

3 个答案:

答案 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;
}