| レンタルサーバー・自宅サーバー設定・構築のヒント |

Nginx の rewrite ディレクティブを使用することで簡単にリダイレクトすることができます。
この rewrite ディレクティブは正規表現が使えて、非常に便利な反面、正しく動作(リダイレクト)しない場合のデバッグが非常に難しいときがあります。
そんなとき、Nginxでは、エラーログに rewrite ディレクティブの動作をロギングしてくれる機能があります。
そこで、今回は、Nginx の rewrite(リダイレクト) をデバッグするためのログ採取と簡単な見方を解説してみます。
2013年5月8日 初版
Nginx で rewrite(リダイレクト) ディレクティブの動作をロギングするには、以下のようにやれば簡単にエラーログファイルにロギングすることができます。
/etc/nginx/nginx.confの設定例
|
先に設定したロギング情報から、rewrite(リダイレクト) ディレクティブが正しく動作しているか確認してみます。
ここでは、Nginx で Feedly のリンクアドレスにくっついてくる utm_source=feedly を消してリダイレクトしてみる で使用したrewrite の設定を確認してみます。
/etc/nginx/nginx.confの設定例
|
この設定では、URIにutm_source=feedly が含まれていたら、それを削除してリダイレクトします。
例えば、http://www.example.com/test.html?utm_source=feedly へアクセスしたら、http://www.example.com/test.html へリダイレクトすればOKとなります。
実際にアクセスしてロギング(/var/log/nginx/example-error.log)を確認してみましょう。
|
"(.*)&?utm_source=feedly&?(.*)"matches ...
で、先に設定したif文 の 正規表現に一致(matches) したことがわかります。"^"matches ...
で、先に設定したrewrite ディレクティブ の 正規表現に一致(matches) したことがわかります。rewritten redirect:"http://www.example.com/test.html" ...
で、先に設定したrewrite ディレクティブ の リダイレクトが実行されたことがわかります。"(.*)&?utm_source=feedly&?(.*)"does not match ...
で、リダイレクト後は、if文 の 正規表現に一致しない(does not matches) ことがわかります。
さらに、http://www.example.com/test.html?ccc=dddd&utm_source=feedly&aaaa=bbb へアクセスしてみます。
|
rewritten redirect:"http://www.example.com/test.html?ccc=dddd&aaaa=bbb" ...
で、先に設定したrewrite ディレクティブ の リダイレクトが思ったとおりutm_source=feedly を削除して実行されたことがわかります。
![]() (amazon ) | インフラエンジニア教本2――システム管理・構築技術解説 (SoftwareDesign別冊)に寄稿しました。 「ログを読む技術」の再掲載になります。8月号を見逃された方は、是非、ご一読くださいませ。 |
![]() (amazon ) | Software Design 8月号に寄稿しました。 「ログを読む技術」について寄稿しました。興味のある方は、是非、ご一読くださいませ。 |
| また、執筆 や当サイトにおける広告 のご依頼などございましたら、お問い合わせページより ご一報ください。 | |
へどうぞ!!
へどうぞ。
へどうぞ。(お試し期間が15日あります。)Copyright © 2009 - 2025レンタルサーバー・自宅サーバー設定・構築のヒント