LoginSignup
0
1

More than 5 years have passed since last update.

標準インストールのnginxでconfigファイルだけでrandomっぽい事をする方法

Last updated at Posted at 2013-11-13

nginxでrandom使いたい事って無いですか?

僕の場合は、表面上のURLはそのままにrewriteでAB testしたいという要件があり、nginxでrandomを使えないか調べてみました。

標準じゃないModuleならある

標準じゃないModuleなら、randomを使う方法があります。
http://wiki.nginx.org/HttpSetMiscModule#set_random

素直にこれを使えばいいのですが、できればyumとかのパッケージ管理から外れるのが嫌で標準のnginxでconfigで頑張れないか試してみました

標準インストールのnginxでrandomっぽい事をするconfig

いろいろ調べてみましたが、どうしても発見できず。
標準のModuleだと、randomって無いんですよね。(「おぃおぃ!あるよ!」という突っ込み歓迎)

そこで発想を変えて「configで取得できる値でrandomっぽい値を取得できるものをベースにしたら行けるんじゃないか」と思い、探してみたところ。。。

ありました。クライアント側のIPアドレス。

これをうまく使ってゴニョゴニョすればrandomっぽい感じに出来る(はず)。しかも、クライアントのIPが変わらない間は同じ値を生成できる。まさに僕の要件(AB test)にはピッタリでした。

set $ab "a";
if ($http_remote_addr ~* [0|2|4|6|8]$) {
    set $ab "b";
}

これで50%の確率でaとbに振り分ける事が出来ます。
if文の所を工夫すればもう少し幅広い用途に使えそうです。

*もっとうまい方法を知ってるor思いついた方いたらぜひ教えて下さい(><)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1