基本的な設定
エラーページの設定部分のみ抽出すると以下のような書き方がスタンダードのようです。
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ページを見せてあげる、という意図です。