我希望 /media/thumbnails 下的所有 URL 都从磁盘提供,如果文件不存在,则从另一台服务器提供,但不重定向客户端。我相信这应该可行,但我找不到它的问题所在:
location /media/thumbnails {
try_files $uri @thumbnail_generator;
}
location /media {
root /home/plinio/nginx_test;
break;
}
location @thumbnail_generator {
proxy_pass http://127.0.0.1:8081/media_generate$uri;
}
即使在创建 /home/plinio/nginx_test/media/thumbnails/test.txt 文件之后,对 /media/thumbnails/test.txt 的请求仍然在内部重定向到 @thumbnail_generator。
答案1
您还没有向我们展示完整的 vhost 配置,所以我不能肯定地说,但是您在位置块中使用该root
指令/media
表明您可能没有root
在顶级 vhost 配置中的指令。
Nginxlocation
块不是累积的;它发现最佳单场比赛 location
block(根据文档中指定的规则),并使用它。因此,如果您在 vhost 配置本身中没有该 block,那么您的查找/media/thumbnails/text.txt
将不会到达您认为的文件系统上的位置,因此文件不存在,并且内部重定向将启动。
顺便说一句,您可以通过打开调试日志记录并查看 vhost 错误日志来轻松找到这些问题。Nginx 在记录处理请求的操作方面做得相当好,而完全错误的文件路径通常是您做错事的重要线索。