我正在尝试将nginx用作临时http缓存,以便最大限度地减少对内容的请求。我的内容在多个服务器上,因此我不能将静态proxy_pass参数用于直接位置,而是使用重写到php脚本:
rewrite /([^/]+\.jpg) /index.php?file=$1 break;
proxy_pass http://www.phpserver.com;
php脚本(可能是http://www.phpserver.com/index.php)然后将带有http代码301的重定向返回到实际文件位置(如http://www.contentserver1.com/filepath/file.jpg)。
问题是nginx返回重定向标头而不是检索,缓存和返回实际内容。
那么如何让它从实际服务器获取内容而不是缓存标题?
答案 0 :(得分:0)
Nginx只能作为代理使用。它对您的应用程序(站点)的逻辑一无所知,它只是代理请求,并且可以用于缓存响应。
要使此架构正常工作,您必须从nginx中删除rewrite
部分,并将此逻辑移至phpserver.com。 phpserver必须下载此文件并将其输出到nginx。即使操作非常困难,nginx也会缓存此响应,当接收到下一个请求时,nginx将直接从其缓存中给出响应。