Hai.Adachinです。

今回はちょっとnginxでリダイレクトの設定をする機会があったのでブログします。

例えば、コーポレートのドメインが変わった。古いサイトは使わない。and新しいドメインを作ってそっちにリダイレクトさせる。

これを対応するのがインフラエンジニア。

正規表現とか駆使してできるようになれば、先輩に

「(・∀・)イイネ!!」

と褒められるのでちゃんと抑えていきましょう!!


■なにがしたいのか

例えば

①www.adachin-server.comにアクセスするとwww.adachin.comにリダイレクトしてほしい

②www.adachin-server.com/index.html xxx_xxx.htmlに来た時もwww.adachin.comにリダイレクトしてほしい

(・ω<)とりあえず①は出来そうだ。。②は正規表現かな。。

とりあえず基本から説明していきます。


■Nginxのリダイレクト方法について

locationrewriteを使います!

ApacheだとRewriteRuleを使いますね。

rewiteは簡単ですので割愛♡

locationがむずいので説明します。

で、これでどうすんの?

■locationの優先順位について

locationを使ってURLに応じた制御ができます。

例えば

www.adachin-server.com/hogeの場合のときはこうするなどなど。

では、修飾子は全部で5つあるので覚えましょう。

  1. = : 完全一致
  2. ^~ : 前方検索(正規表現より優先度が上)
  3. ~ : 正規表現(大文字小文字区別あり)
  4. ~* : 正規表現(大文字小文字区別なし)
  5. なし : 前方検索(正規表現より優先度が下)

おん?そんなに難しくはありません。

ちなみに上記の順番は処理の優先順でもあるので、ひとつずつ例を出して説明します。

要求 : http://example.com/ -> configuration A
要求 : http://example.com/index.html -> configuration B
要求 : http://example.com/documents/document.html -> configuration C
要求 : http://example.com/images/1.gif -> configuration D
要求 : http://example.com/documents/1.jpg -> configuration E

なるほど。。分からな!いや分かる!

とりあえず①は予想付いたのかと思います。


■答えをさっさと教えてくれい!

はい。

・解説

とりあえず一行目の/はwww.adachin-server.com→このときはと制御しています。
さらには完全一致なので/のみ来た時だけです!
rewiteは/$で変数指定してリダイレクト先をぶち込んでます。
permanentはコード301を返します。permanent以外にも・・・
・last
rewriteの実行を終了し、書き換えられたURIに対して最初から ロケーションマッチをやり直します。
・break
rewrite の実行を終了します。
・redirect
コード302を返します。


■②のほうは?

長くなったので次回ブログします。

(・ω<)ノシ

参考:http://heartbeats.jp/hbblog/2012/04/nginx05.html


カテゴリー: BlogCentOSNginxredirect

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください