使用nginx和/或varnishcaching服务器生成的301redirect

我正在实施一种url缩短服务。 会发生什么是我有一些后端应用程序服务器接受请求,做一些计算,并返回一个301redirect的URL返回上游到一个nginx前端:

request ---> nginx ----> app_server 

我想能够做的就是caching这个返回的301 url的同一个请求(具有“短代码”的具体url)。

nginx会自动执行这个caching吗? 或者我应该在nginx和app_server之间join类似varnish的东西? 我可以很容易地将其caching在memcache中,但是这需要点击app_server,在第一次请求之后我肯定可以放弃这一点。

谢谢。

你可以configurationNginx来做到这一点。

示例:cachingredirect(301或302)长达60分钟:

 proxy_cache_valid 301 302 60m; 

我也在研究这个,从我理解的清漆非常间接地redirect。 而Nginx的代理caching也一样。 那么据我所知,我们需要Varnishcaching和上游和Nginx只为redirect?

这可能不是特定于您的应用程序。

清漆caching任何匹配其逻辑的HTTP响应,redirect仅仅是可以轻松caching的HTTP 301或302响应。 当然,您可以通过Varnish的VCL语言来覆盖默认的逻辑。

我们的Varnish服务器自动cachingredirect。 您可以通过在后端响应中设置“Cache-Control:max-age”(或Expires)标头来控制cachingTTL。 如果你不指定一个TTL,我相信默认是120s。 确保你没有在域上设置任何cookie,或者在进入Varnish时丢弃它们,否则请求将通过Varnish进行。 我们简单地为redirect创build了一个单独的子域,并通过VCL明确地丢弃任何传入和传出的cookie。

作为其他用例的一个注意事项:你可以完全卸载redirect到Varnish,所以它们不会到达后端。 一些示例代码: https : //www.varnish-cache.org/trac/wiki/VCLExampleRedirectInVCL