Skip to main content.

nginxでerror_pageが動かない!となった時の対処法

 
20150221-nginx.jpg


nginxで運営しているサイトでエラーページをカスタマイズする必要が出てきたんです。

ググってみると「error_page 404 /40x.html」って感じで設定すればすぐ反映されまっせ、という記事は結構見かけます。
ですが、いかんせん設定してもerror_pageが全く効かなかったんですよ。
configtestでエラーが出るわけでもなく。

もうね、error_page syntax in nginx isn't working! ですよ。
んで、どうしたものかと2時間くらいググったり試行錯誤した結果、原因と対処法判明。



今回のサイトでは、拡張子が.htmlの場合でもphpが動作するように設定していたので、


location ~\.(php|html)$ {
  fastcgi_**** 〜〜
  fastcgi_**** 〜〜
  fastcgi_**** 〜〜
  〜
}

という風に記述しており、アクセスを全部FastCGIに渡していたわけですが、そこに原因があった模様。
つまり、404エラーの処理もnginxでは無くてFastCGI側で処理されるようになってたわけですね。


そこで、

location ~\.(php|html)$ {
  〜
  fastcgi_intercept_errors on;
}


という風に"fastcgi_intercept_errors"をonにしてやると解決しました。
無事error_pageが有効に。

ググっても日本語のページでは全然ヒットしなかったので時間かかりました∠( ゚д゚)/
このエントリーをはてなブックマークに追加
 

comments powered by Disqus