nginx で特定のIPのみ別の upstream を使う
この記事はWanoグループ Advent Calendar 2016の17日目の記事…が書かれなかったので代理で埋められた記事です。
例えば、新しい機能をリリースするが、一度、関係者のみ本番リリースしたいようなとき。
現状の設定が以下のようになっているなら、
upstream backend_server {
server 192.168.0.1:8000;
}
location / {
proxy_pass http://backend_server;
}
次のように変更する。
upstream backend_server {
server 192.168.0.1:8000;
}
# テスト用のアップストリーム を設定する
upstream backend_server_test {
server 192.168.0.2:8000;
}
set $backend_server 'backend_server';
if ($http_remote_addr = '192.168.0.5') {
set $backend_server 'bakcend_server_test';
}
location / {
# proxy_pass には変数で渡す
proxy_pass http://$backend_server;
}
このようにすると、REMOTE_ADDRが192.168.0.5の場合のみ、backend_server_test がバックエンドとして使われ、それ以外の場合は、今までと同様、backend_server が使われます。
nginx の設定は柔軟でいいですねー。