2

私には比較的単純な(私が思う)ユースケースがありますが、誰かがこれを行った例は見つかりません。2つの異なるアプリケーションの前でVarnishをキャッシュおよびリバースプロキシとして使用しており、どちらも同様のことを行うため、両方でもう少し統一されたものにしたいと考えています。以下に示すように、VarnishがURLの書き換えに役立つことを期待していました。

ページ付けの元のアプリケーションURL(最初の10個のアイテムを取得):

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

目的のURL:

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

これはほんの一例です(2つのパラメーターを組み合わせているため最も複雑です)が、すべての場合において、パラメーターの入力値は同じままであり、パラメーター名が変更されるだけです。

別の例は次のとおりです。

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

に:

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

ワニスの経験はありますか?また、これをどのように行うことができますか?

ありがとう

4

1 に答える 1

5

どうやらあなたはできます。答えは、regsubがあなたの友達だということです。

例えば:

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

これにより、着信する「id」パラメーターがバックエンドで「byGuid」パラメーターに変換されます。tは、残りのURL文字列に対しても多くのことを行いますが、基本はそこにあります。したがって、誰かが同様のことをしたい場合、これは良い出発点です。

于 2010-08-25T17:06:10.867 に答える