<div dir="ltr">Hello Sergey, the same wishes for you.<br><br>Thanks for the link to the redis module. My use case is that I want to cache dynamic responses from a origin server just in case the origin is unhealthy. The origin server already uses redis as a cache, I just wanted to put nginx in front in case of a total failure of that component. Your suggestion gave me some ideas; since the app server already writes query responses to redis and caches internally, I can use your module to just try to read all responses from redis on the same keys from nginx.<br><br>So, how do I configure nginx to do the following:<br><br>For each request:<br><br>1. Try to proxy each request directly to origin using proxy_pass<br>2. If origin server responds with http 5xx, or timeout/connection refused occurs, use the data from redis (which the origin server has written itself to redis previously)<br><br><br>Also, I need to calculate the same redis key in nginx as the origin server does. Currently the redis key is a stringified JSON object... I might need some additional modules to construct this key.<br><br>I will test the following based on your docs at <a href="https://github.com/osokin/ngx_http_redis">https://github.com/osokin/ngx_http_redis</a>.<div><br></div><div>http<br>{<br> ...<br>        server {<br>                location / {<br>                        proxy_pass      backed;<div>                        error_page      500 503 502 504 = @fallback; // does this cover timeout and connect refused as well?<br>                }<br><br>                location @fallback {<br>                        set $redis_key  "$uri?$args"; // this key needs to be calculated differently, some query params form a JSON key in case of GET requests, for POST requests it is taken from the POST body.<br>                        redis_pass      <a href="http://127.0.0.1:6379">127.0.0.1:6379</a>;<br>                }<br>        }<br>}<br><br><br><br>On Sun, Dec 29, 2019 at 9:58 AM Sergey A. Osokin <<a href="mailto:osa@freebsd.org.ru">osa@freebsd.org.ru</a>> wrote:<br>><br>> Hi Ragnar,<br>><br>> hope you're doing well.<br>><br>> On Sat, Dec 28, 2019 at 10:58:06AM +0100, Ragnar Rova wrote:<br>> > I want to use redis as the storage for the cache instead of the filesystem.<br>> ><br>> > I found a third-party module which seems to offer this:<br>> > <a href="https://github.com/openresty/srcache-nginx-module#caching-with-redis">https://github.com/openresty/srcache-nginx-module#caching-with-redis</a>, is<br>> > this the recommended solution? Hot requests should be served from memory,<br>> > with redis as a fallback and use to populate the cache on startup.<br>><br>> The solution you've mentioned uses ngx_http_redis module to get data from<br>> a redis database.  Usually, it's possible to increase a stability and per-<br>> formance of a web service by pushing a static content (html, graphics, binary<br>> files) to a redis database and reroute requests from an application server<br>> to the redis.<br>><br>> Please visit <a href="https://github.com/osokin/ngx_http_redis">https://github.com/osokin/ngx_http_redis</a>, Example 1 for details.<br>><br>> --<br>> Sergey Osokin<br>> _______________________________________________<br>> nginx mailing list<br>> <a href="mailto:nginx@nginx.org">nginx@nginx.org</a><br>> <a href="http://mailman.nginx.org/mailman/listinfo/nginx">http://mailman.nginx.org/mailman/listinfo/nginx</a>
</div></div></div>