LINEで送る
Pocket

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

LINEで送る
Pocket

カテゴリー: BlogCentOSNginxredirect

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニアのMENTAなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなし中。

コメントを残す

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