ルーティングとリダイレクトチェイン検査ツール

nginx -t が成功したからといって、ウェブサイトが開けるわけではない。 当社独自のバックエンドアドレス /admin 長期的には不適切:301 が以下にリダイレクト /admin/そして、それは実際のディレクトリであり、インデックスファイルが存在しないため、ブラウザは直接403エラー(白い画面)を表示します——構文チェックはすべて緑色ですが、ログには「directory index is forbidden」というメッセージが大量に記録されています。このツールは、ステータスコードを段階的に出力するcurl診断スクリプトと、対応する障害に対するnginx修正コード断片を提供します。

無料・ ログイン不要 ローカル生成・ コンテンツはアップロードされません 対応するインシデント・ バックエンドアドレスが 301→403 でホワイトスクリーンになる

1サイトとパス

推奨:対応する形で記述する:/x および /x/ 両方をテストしてください。両者の動作はしばしば異なります。

2nginx 修正オプション

結果ヘルスチェック概要

出力curl リダイレクトチェーン診断スクリプト

0 行
—
bash route-check.sh各ホップのステータスコードと Location ヘッダーがすべて出力されます。

出力nginx 修正スニペット

0 行
—

クイックリファレンスこのステータスが表示された場合、まず以下の箇所を確認してください

現象最も一般的な根本原因確認方法
301 → スラッシュ付き → 403パス名は実際のディレクトリですtry_files $uri $uri/ ディレクトリのリダイレクトがトリガーされ、そのディレクトリ内に index ファイルがない場合ls /var/www/サイト/該当ディレクトリ index.html があるかどうかを確認する
リダイレクト回数が多すぎます正確な location における 301 と try_files の内部リダイレクトが相互にネストされる問題スクリプト内で Location ヘッダーが前のアドレスに戻っているかどうかを確認します。
クリーンURLで404になるが、.html付きでは正常に動作するtry_files の記述が不足しています $uri.html補完 try_files $uri $uri.html $uri/ =404;
.html が誤ったクリーンURLへ301リダイレクトされるlocation 内で使用 if 正規表現による判定を行い、カバー済み $1 キャプチャグループif 判定をこの location 外に移動するか、map を使用する
あるプレフィクスパスが想定された location を経由していない正規表現 location が優先される ^~ プレフィックス前方ヒット(^~ 正規表現を抑制しますが、通常のプレフィックスは抑制されません)nginx -T | grep -n location 順序とタイプを確認
403 かつログに「forbidden by rule」と記録されている場合deny ルールまたはファイル権限error log の具体的な行を確認し、推測しないこと
この罠は私たちも踏みました

1 · バックエンドアドレスが常に 403 になる。/admin 301 でリダイレクトされました /admin/一方で /admin/ 実際のディレクトリ(中に data/ が配置されている)であり、index ファイルが存在しない場合 → 403 白画面。ただそれだけです。 /admin.html アクセス可能。

2・リライトは内部での処理であり、index ファイルの追加ではありません。rewrite ^/admin/?$ /admin.html last; /admin および /admin/ の両方をファイルに直接ルーティングし、ログイン保護レイヤーは変更しません。

3 · 構文チェックではこのような問題は検出できない。nginx -t 構文のみをチェックするため、リダイレクトチェーンやディレクトリインデックスといった論理エラーはすべて「OK(緑)」と表示されます。修正後は、実際にリクエストを送信してステータスコードとリダイレクト回数を確認する必要があります。

4・ペアテスト/x と /x/ 2 つの異なる URI であり、マッチするルールが異なる可能性があるため、両方とも 200 になる必要があります。