reverso proxy_pass inverso español configurar como cache caching nginx redis

caching - proxy_pass - Usar nginx para servir contenido directamente de un caché redis



proxy inverso apache (3)

Estoy usando nginx para pasar solicitudes a una aplicación de nodo. La aplicación básicamente actúa como un caché remoto para html (comprueba si lo que el usuario está solicitando está en el redis db, si solo lo muestra, si no lo toma y lo almacena en el caché redis y lo sirve).

Tenía curiosidad si había alguna forma de eludir golpear la aplicación Nodo haciendo que nginx sirviera el contenido directamente desde redis. He estado jugando con el módulo http_redis pero realmente no puedo hacer que funcione.

Un ejemplo simple sería: http://mywebsite.com/a donde nginx serviría el contenido en la tecla ''a'' o lo pasaría a la aplicación del nodo si la clave no existiera. ¿Esto es posible?


Debería poder obtener algo configurando Nginx como un proxy inverso para Webdis .

La forma en que utiliza Webdis es que pone todo el comando en la URL, por lo que GET la clave que solicita /GET/a . Esto significa que si todo lo que desea servir está disponible usando GET , puede hacer algo como esto en Nginx:

location / { rewrite ^(.*)$ /GET/$1 break; proxy_pass http://127.0.0.1:7379/; }

(Estoy escribiendo la configuración aquí arriba, la sintaxis puede estar un poco apagada).

Sin embargo, el proyecto Webdis es muy joven, por lo que no se sabe qué tan bien funcionará, y las respuestas son documentos JSON con algo extra que probablemente no desee devolver.


Tal vez algo más difícil de configurar que Webdis pero puedes hacerlo directamente en el daemon nginx con algunos módulos adicionales como redis2-nginx-module . Deberá recompilar nginx.

Hay algunos buenos ejemplos de configuración en la página de inicio.

Por ejemplo :

# GET /get?key=some_key location /get { set_unescape_uri $key $arg_key; # this requires ngx_set_misc redis2_query get $key; redis2_pass foo.com:6379; }

Por supuesto, con un poco más de configuración nginx, puede obtener otro patrón de URL.

Tenga en cuenta que para este ejemplo, también deberá compilar el módulo ngx_set_misc .


Sé que este es un hilo viejo, pero aun así, esto puede ser útil para algunos. Probé el mismo método que si tuviera servicio de nginx desde Redis directamente sin tocar usando HttpRedis2Module en nginx. Me alegré cuando lo conseguí porque era un poco complicado, pero cuando hice algunas pruebas de estrés me temo que dieron resultados realmente malos.

De hecho, fue un poco más rápido y mucho más estable para servir utilizando nginx->php->mongodb que simplemente usar nginx->redis con el módulo.