なぜそんなことした?
本番環境で
- 開発関係者は新規バックエンドシステムにアクセス
- 開発関係者以外のユーザは既存バックエンドシステムにアクセス
ということがしたかったので。
どうやった?
以下の設定をnginxの設定ファイルに追加しました。
if ($remote_addr = "<自分がアクセスするIPアドレス>") {
proxy_pass http://<新システムのアドレス>;
}
if ($remote_addr != "<自分がアクセスするIPアドレス>") {
proxy_pass http://<旧システムのアドレス>;
}
追記 複数IPアドレスがある場合
set $isDeveloper false;
if ($remote_addr = "<IPアドレス1>") {
set $isDeveloper true;
}
if ($remote_addr = "<IPアドレス2>") {
set $isDeveloper true;
}
if ($isDeveloper = true) {
proxy_pass http://<新システムのアドレス>;
}
if ($isDeveloper = false) {
proxy_pass http://<旧システムのアドレス>;
}
ちょっと躓いたこと
ifのあとにスペース入れないと怒られてしまいました。
だめな例
if($remote_addr = "<自分がアクセスするIPアドレス>") {
proxy_pass http://<新システムのアドレス>;
}
良い例
if ($remote_addr = "<自分がアクセスするIPアドレス>") {
proxy_pass http://<新システムのアドレス>;
}
注意
自分が趣味で運用しているサービスで行った対応です。
通常の商用システムでも安全に動作するかは保証できかねます。。。