Domanda

sto usando nginx e Redis nel mio sito. Per diversi articoli sul mio sito, voglio aggiungere tracciamento params al loro URL in modo che quando un utente fa clic su un elemento, posso raccogliere le statistiche di utilizzo dell'utente oltre a servire l'utente contenuto richiesto. Sto cercando metodi su come catturare questa statistica a Redis da nginx, vale a dire senza colpire l'applicazione in background.

Per esempio., Supponiamo di avere diverse file di tavoli sulla mia pagina e ogni articoli tabella tenere in formato riga / colonna. Così, per un elemento in {table: 2, Fila: 1, colonna: 3} Se l'URL reale è: www.mysite.com/news/dodi, allora voglio incorporare l'url: www.mysite.com/news / dodi / giorno = 29? tabella = 2 & row = 1 & colonna = 3. Quando l'utente fa clic su di esso, nginx colpirà Redis per andare a prendere il contenuto e anche aggiornare le statistiche appropriate (qui può essere incremento giorno-29, tavolo-2, ...).

Qualsiasi suggerimento su come ho raggiungere questo obiettivo senza colpire l'applicazione di fondo?

È stato utile?

Soluzione

Per i parametri di monitoraggio, tenere questo tipo di lavoro al di fuori del campo di applicazione della richiesta di utenti. Non farli pagare la pena di latenza per le statistiche di monitoraggio. Cron uno script che estrae i parametri da access.log e aggiorna Redis e / o database.

In termini di caching dei contenuti, c'è un modulo pubblicato di recente Redis nginx che funziona più o meno allo stesso modo in cui il modulo memcached. Solo GET e Select sono attualmente attuata. Il presupposto è che l'applicazione è popolando la cache.

http://wiki.nginx.org/Nginx3rdPartyModules#HTTP_Redis_Module

Esempio nginx.conf:

http
{
 ...
        server {
            location / {
                set $redis_db   "0";
                set $redis_key  "$uri?$args";
                redis_pass      127.0.0.1:6379;
                error_page      404 502 504 = @fallback;
             }

             location @fallback {
                 proxy_pass      backed;
             }
        }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top