我试图构建一个位置块,它提供/tmp
目录中的文件,但只提供那些不以.txt
扩展名结尾的文件。
现在我有这个:
location ~^\/temporary(?!.*\.txt$)(.*)$ {
root /tmp;
try_files $1 =404;
}
问题是我只得到404,即使我请求的文件存在。我使用了一点调试来确保这一点,下面是“/temporary/test.html”URI的调试转储:
022/07/17 19:53:42 [debug] 6408#0: *1 http script capture: "/test.html"
2022/07/17 19:53:42 [debug] 6408#0: *1 trying to use file: "/test.html" "/tmp/test.html"
2022/07/17 19:53:42 [debug] 6408#0: *1 trying to use file: "=404" "/tmp=404"
2022/07/17 19:53:42 [debug] 6408#0: *1 http finalize request: 404, "/temporary/test.html?" a:1, c:1
2022/07/17 19:53:42 [debug] 6408#0: *1 http special response: 404, "/temporary/test.html?"
2022/07/17 19:53:42 [debug] 6408#0: *1 http set discard body
2022/07/17 19:53:42 [debug] 6408#0: *1 HTTP/1.1 404 Not Found
正如您所看到的,服务器实际上尝试读取/tmp/test.html
文件,因此路径构建已经成功。
此外,该文件也存在并且可读,如以下命令所示:
sudo -u nobody stat /tmp/test.html
File: /tmp/test.html
Size: 15 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 2097220 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ nobody) Gid: ( 1000/ user)
Access: 2022-07-17 19:26:19.701542983 +0300
Modify: 2022-07-17 19:53:17.923305174 +0300
Change: 2022-07-17 19:53:17.923305174 +0300
Birth: 2022-07-17 19:26:19.701542983 +0300
我错过了什么?
1条答案
按热度按时间k3fezbri1#
好的,很明显
/tmp
目录是问题的根源。当我尝试另一个目录时,由于某种原因,一切都按预期运行。