我正在开发一个 webapp,X-Accel-Redirect 标头仅在没有扩展名的文件中工作正常。出于某种原因,如果我为文件名添加扩展名,则 X-Accel-Redirect 不起作用。
工作示例:
X-Accel-Redirect: /protected_files/myfile01.z
非工作示例:
X-Accel-Redirect: /protected_files/myfile01.zip
我正在使用 nginx 1.7.1。
最初,奇怪的部分是,如果我用 mime.types 文件中未注册的内容更改扩展名部分(在本例中为“.zip”),它可以正常工作(显然我相应地重命名了文件),但扩展名指向知道 mime 类型(例如“zip”、“jpg”、“html”)将生成“404 Not found”错误。
更新: 问题似乎是由于我在 conf 文件中的这条规则:
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
出于某种原因,似乎 nginx 先测试文件系统中文件的存在,然后再尝试“内部/别名”路径。
关于如何让 nginx 过滤来自 X-Accel-Redirect 的所有“/protected_files”直接到“内部”而不是先尝试在其他路径中查找的任何想法?
提前致谢。