Movatterモバイル変換


[0]ホーム

URL:


モバイル表示について
レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。
  1. Home
  2. CentOS
  3. ウェブサーバーのインストール・設定
  4. nginxのインストール・設定
  1. Home
  2. Scientific Linux
  3. ウェブサーバーのインストール・設定
  4. nginxのインストール・設定
  1. Home
  2. Ubuntu
  3. ウェブサーバーのインストール・設定
  4. nginxのインストール・設定
  1. Home
  2. Debian
  3. ウェブサーバーのインストール・設定
  4. nginxのインストール・設定
» Nginx の rewrite(リダイレクト) をデバッグする

Nginx の rewrite(リダイレクト) をデバッグする

2013年5月8日2017年8月8日
rewite

Nginx の rewrite ディレクティブを使用することで簡単にリダイレクトすることができます。
この rewrite ディレクティブは正規表現が使えて、非常に便利な反面、正しく動作(リダイレクト)しない場合のデバッグが非常に難しいときがあります。
そんなとき、Nginxでは、エラーログに rewrite ディレクティブの動作をロギングしてくれる機能があります。

そこで、今回は、Nginx の rewrite(リダイレクト) をデバッグするためのログ採取と簡単な見方を解説してみます。

Nginxのリダイレクトの基本は、Nginx でリダイレクト ( rewrite ) するには を参照してください。

Nginx の rewrite(リダイレクト) をデバッグする

rewrite(リダイレクト) ディレクティブの動作をロギングする

Nginx で rewrite(リダイレクト) ディレクティブの動作をロギングするには、以下のようにやれば簡単にエラーログファイルにロギングすることができます。


/etc/nginx/nginx.confの設定例

...server{    server_name www.example.com;    ...error_log   /var/log/nginx/example-error.log notice;rewrite_log on;    ...}...
error_log /var/log/nginx/example-error.log notice;
エラーログの保存先を設定します。
ここでは、/var/log/nginx/example-error.log へ保存します。

第2パラメータは、以下の値を設定することができます。デフォルトは、error となります。
  • debug
  • info
  • notice
  • warn
  • error
  • crit
  • alert
  • emerg
上に行くほど情報量は多くなります。
rewrite(リダイレクト) ディレクティブの動作をロギングする場合は、notice以上である必要があります。

rewrite_log on;
rewrite(リダイレクト) ディレクティブの動作をロギングするか否かを設定します。
ここでは、on : ロギングする を設定しています。
デフォルトは、off : ロギングしない となります。

rewrite(リダイレクト) ディレクティブのロギングを確認してみる

先に設定したロギング情報から、rewrite(リダイレクト) ディレクティブが正しく動作しているか確認してみます。

ここでは、Nginx で Feedly のリンクアドレスにくっついてくる utm_source=feedly を消してリダイレクトしてみる で使用したrewrite の設定を確認してみます。


/etc/nginx/nginx.confの設定例

...server{    server_name www.example.com;    ...    error_log   /var/log/nginx/example-error.log notice;    rewrite_log on;    ...if ( $args ~ "(.*)&?utm_source=feedly&?(.*)" ) {    set $args $1$2;    rewrite ^ $scheme://$host$uri permanent;}    ...}...

この設定では、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)を確認してみましょう。

...2013/04/25 17:25:04 [notice] 10173#0: *6 "(.*)&?utm_source=feedly&?(.*)"matches "utm_source=feedly", client: 192.168.1.100, server: www.example.com, request: "GET /test.html?utm_source=feedly HTTP/1.1", host: "www.example.com"2013/04/25 17:25:04 [notice] 10173#0: *6 "^"matches "/test.html", client: 192.168.1.100, server: www.example.com, request: "GET /test.html?utm_source=feedly HTTP/1.1", host: "www.example.com"2013/04/25 17:25:04 [notice] 10173#0: *6rewritten redirect:"http://www.example.com/test.html", client: 192.168.1.100, server: www.example.com, request: "GET /test.html?utm_source=feedly HTTP/1.1", host: "www.example.com"2013/04/25 17:25:04 [notice] 10173#0: *6 "(.*)&?utm_source=feedly&?(.*)"does not match "", client: 192.168.1.100, server: www.example.com, request: "GET /test.html HTTP/1.1", host: "www.example.com"...

"(.*)&?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 へアクセスしてみます。

...2013/04/25 17:35:33 [notice] 10173#0: *7 "(.*)&?utm_source=feedly&?(.*)"matches "ccc=dddd&utm_source=feedly&aaaa=bbb", client: 192.168.1.100, server: www.example.com, request: "GET /test.html?ccc=dddd&utm_source=feedly&aaaa=bbb HTTP/1.1", host: "www.example.com"2013/04/25 17:35:33 [notice] 10173#0: *7 "^"matches "/test.html", client: 192.168.1.100, server: www.example.com, request: "GET /test.html?ccc=dddd&utm_source=feedly&aaaa=bbb HTTP/1.1", host: "www.example.com"2013/04/25 17:35:33 [notice] 10173#0: *7rewritten redirect:"http://www.example.com/test.html?ccc=dddd&aaaa=bbb", client: 192.168.1.100, server: www.example.com, request: "GET /test.html?ccc=dddd&utm_source=feedly&aaaa=bbb HTTP/1.1", host: "www.example.com"2013/04/25 17:35:33 [notice] 10173#0: *7 "(.*)&?utm_source=feedly&?(.*)"does not match "ccc=dddd&aaaa=bbb", client: 192.168.1.100, server: www.example.com, request: "GET /test.html?ccc=dddd&aaaa=bbb HTTP/1.1", host: "www.example.com"...

rewritten redirect:"http://www.example.com/test.html?ccc=dddd&aaaa=bbb" ...
で、先に設定したrewrite ディレクティブ の リダイレクトが思ったとおりutm_source=feedly を削除して実行されたことがわかります。


rewrite (リダイレクト) は、簡単な設定であれば、ログ情報での確認まで必要ないかもしれません。if文、正規表現などを駆使して、難しい設定をした場合などは、このログ情報でどこまで一致したか確認できて、デバッグ作業がはかどることがよくあります。
困ったときに、このログの採取方法を思い出すと、きっと幸せになれる?と思います。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :


コメントを投稿 :

お名前*

メールアドレス*
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント*

* 印の項目は、入力が必要な項目です。

インフラエンジニア教本2――システム管理・構築技術解説 (SoftwareDesign別冊)
(amazon)

インフラエンジニア教本2――システム管理・構築技術解説 (SoftwareDesign別冊)に寄稿しました。

「ログを読む技術」の再掲載になります。8月号を見逃された方は、是非、ご一読くださいませ。

Software Design 201408
(amazon)

Software Design 8月号に寄稿しました。

「ログを読む技術」について寄稿しました。興味のある方は、是非、ご一読くださいませ。

また、執筆当サイトにおける広告 のご依頼などございましたら、お問い合わせページより ご一報ください。




最近投稿の記事

Genymotionとは、公式サイト(http://www.genymotion.com/)には、以下のように記述があります。G ...

以下のように Android x86 を仮想マシンへインストールし、色々と試してきました。仮想マシンを使って Android ...

Android x86とは、いわゆる Android のPC版OSです。Android は、Googleによって開発されたスマー ...

Android x86とは、いわゆる Android のPC版OSです。Android は、Googleによって開発されたスマー ...

今回は、Mondo Rescue を使って バックアップとリストア(復元)をやってみたいと思います。いまだに、さくらのVPSは、バッ ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルなCPU 1(core)の 512 プランから、最高CPU 10(core), メモリ 32(GB), SSD容量 800(GB)までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
(CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/Serverman@VPSのサイトへへどうぞ。



KVM採用ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用お名前.com VPS(KVM)2G プラン 初期設定費無料キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



Copyright © 2009 - 2025レンタルサーバー・自宅サーバー設定・構築のヒント

  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ
Time : 0.1885 [s]

[8]ページ先頭

©2009-2025 Movatter.jp