ブログblog

ロードバランサがあるサーバ環境でのリダイレクト設定

Writer: noda 更新日:2019/05/07

こんにちは
福岡オフィス、エンジニアの野田です。


令和一発目の記事として、
今回は技術的な記事を書いていきたいと思います。


先日ある企業様のサイト改修に伴い、リダイレクト設定をする必要がありました。
改修作業は、ある3拠点からhttps://〇〇〇/contents/配下を編集します。
リダイレクトの内容としては、
特定の3拠点のIPアドレス以外のcontents配下へのアクセスはhttps://〇〇〇/(メンテナンスの旨が表示されるページ)へ
リダイレクトさせるよう設定するというものです。
なので特定の3つのIPアドレスからはhttps://〇〇〇/contents/配下へ
アクセスできるようにします。

尚、今回本番環境でリダイレクト設定をする前に
テストとしてステージング環境で設定してみます。


contents直下の.htaccessを編集します。
内容はこちら。

試しに特定のIPアドレスのひとつである福岡オフィスからhttps://〇〇〇/contents/にアクセスしてみます。
アクセスできました。
次に、スマートフォンからhttps://〇〇〇/contents/にアクセスしてみます。
無事、https://〇〇〇/にリダイレクトされました。


次は本番環境にて、同じように.htaccessを編集します。
ステージングの時とドメイン名が違うためドメイン名だけ変更し、
あとは同じ内容で記述します。


記述が終わったので、実際にアクセスしてみます。
今回はまずスマートフォンからhttps://〇〇〇/contents/にアクセスします。
リダイレクトされました。
次は福岡オフィスのIPアドレスからhttps://〇〇〇/contents/にアクセスします。
ここでリダイレクトされずにcontents配下へそのままアクセスできれば作業終了です。
・・・リダイレクトされてしまいました。

もう一度.htaccessを開き、誤字・脱字がないか確認しますがどこも間違っていません。
ブラウザのキャッシュ削除、apache再起動など試してみても結果は同じです。
その後、対応策を模索する中、浮かび上がった原因は「ロードバランサ」です。
どうやらステージングと違い本番環境ではロードバランサを通していたようで、
どのIPアドレスからアクセスしても、
WebサーバへはこのロードバランサのIPアドレスとしてアクセスされていました。
事情によりロードバランサの設定をいじることはできないので、
.htaccessにてどうにかするしかありません。


そこでユーザーエージェントを判別して、リダイレクトするような設定をしてみます。
各ブラウザ、ユーザーエージェントを変更してのアクセスが可能なのでこの方法であれば解決しそうです。
内容としては
・ユーザーエージェントが「DESIGNARE」以外は、https://〇〇〇/へリダイレクト
つまりユーザーエージェント「DESIGNARE」でアクセスすればcontents配下など、どこへでもアクセスできるようにします。
実際に記述したのがこちら

記述が終了したので実験してみます。
(各ブラウザからのユーザーエージェント変更方法については割愛させていただきます)
まずはユーザーエージェントを変更せずアクセスしてみます。
しっかりリダイレクトされました。
次はいよいよユーザーエージェント「DESIGNARE」で、https://〇〇〇/contents/にアクセスします。
・・・見事、リダイレクトされずにアクセスできました!


今回のようにロードバランサがあるようなサーバ環境で.htaccessだけでリダイレクト設定したいときはこの方法は使えそうです。


知らないことがまだまだたくさんあると思うので、これからも様々な知識を吸収し、発信していけるよう頑張ります。