Domanda

Ho un relativamente semplice (credo) caso d'uso, ma non riesco a trovare alcun esempio in cui qualcuno ha fatto questo. Stiamo usando vernice come cache e proxy inverso davanti a due diverse applicazioni e vorremmo rendere le cose un po 'più unificata sia in quanto entrambi fanno cose simili. Speravo vernice potrebbe aiutare riscrivere gli URL come illustrato di seguito.

URL dell'applicazione originale per l'impaginazione (ottenere primi 10 articoli):

http://myapplication.com/products/?startindex=1&endindex=10

URL desiderata:

http://myapplication.com/products/?paginate=1:10

Questo è solo un esempio (il più complesso perché unisce due parametri), ma in tutti i casi i valori di input per i parametri rimangono gli stessi, è solo che i nomi dei parametri cambieranno.

Un altro esempio potrebbe essere:

http://myapplication.com/search/?query=something

a:

http://myapplication.com/search/?q=something

Qualcuno ha alcuna esperienza con vernice e come questo potrebbe essere fatto?

Grazie

È stato utile?

Soluzione

A quanto pare è possibile. La risposta è che regsub è tuo amico.

Ad esempio:

if (req.url ~ "(.*)(id=)") {
        set req.url = regsub(req.url, "(feeds/[a-zA-Z]*/)(.*)([\?|&])(id=)([a-zA-Z0-9]*)(.*)", "\1\2\3byGuid=\5\6");
}

Questo ti permette di convertire e il parametro in entrata "id" in un parametro "byGuid" sul backend. t fa anche un mucchio di cose con il resto della stringa URL ma le basi ci sono. Quindi, se qualcuno vuole fare qualcosa di simile questo è un buon punto di partenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top