问题描述
|
我正在尝试将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返回重定向标头,而不是检索,缓存和返回实际内容。
那么,如何使它从实际服务器中获取内容,而不仅仅是缓存标头?
解决方法
Nginx只能用作代理。它对您的应用程序(站点)的逻辑一无所知,只是代理请求,并且可以缓存响应。
为了使该架构有效,您必须从nginx中删除“ 1”部分,并将此逻辑移至phpserver.com。 phpserver必须下载此文件并将其输出到nginx。即使是非常艰苦的操作,nginx也会缓存此响应,当接收到下一个请求时,nginx会直接从其缓存中给出响应。