基本的な設定
エラーページの設定部分のみ抽出すると以下のような書き方がスタンダードのようです。
error_page 500 502 503 504 /50x.html;
error_page 400 410 403 /40x.html;
location = /50x.html {
root /var/www/project/error;
}
location = /40x.html {
root /var/www/project/error;
allow all;
}
location /error/ {
root /var/www/project;
allow all;
}上記の設定に対応するディレクトリ構造はこんな感じにします。
var/www/project
└ error
├ 40x.html
├ 50x.html
└ resources
├ css
├ js
└ imagesちなみにnginxでよく嵌るのが、上記のerrorディレクトリとlocation /error/の関係でしょうか。
locationの後ろにディレクトリ指定したら(この場合error)、同じ名前のディレクトリがrootで指定しているパスの直下に無いとだめですね(毎回忘れる・・)。
allow all について
先ほどの設定でallow allを付けていました。これはアクセス制限(IP制限等)をかけた場合の処置です。
例えば
allow xxx.xxx.xxx.xxx;
deny all;のようにIP制限をかけた場合、該当するIP以外の人がアクセスした場合403が出ます。
しかしこの時にallow allがないとカスタマイズした403ページが出ず(アクセス制限しているので)、nginxのデフォルトの403が出てしまうのですね。
ですので、それが嫌だという人はallow allでもって、自身のカスタマイズした403ページを見せてあげる、という意図です。