WEBアプリケーションサーバーであるtomcatのエラーページの表示を変えてみます。デフォルトの表示です。
server.xmlを修正することで変更できます。server.xmlはtomcatの配置先ディレクトリのconfフォルダの中にあります。
Hostタグに以下の記載を追記します。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> : <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" /> : </Host>
showReport=”false”とすることで詳細なエラー内容の表示はなくなります。
セキュリティ的にはこちらのほうが好ましいです。ただtomcatのバージョンも表示されてしまうのでバージョンも非表示にします。
Hostタグの記載を以下のように修正します。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> : <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" /> : </Host>
showServerInfo=”false”も追加しました。
これで必要なエラーメッセージのみの表示となります。
デフォルトのエラーページではなく専用のエラーページを表示するようにしてみます。専用のエラーページはサンプルで以下のHTMLファイルを作成しました。HTMLファイルのファイル名は「40x.html」です。
<!DOCTYPE html> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> </body></html>
web.xmlを修正することで専用のエラーページを表示できます。web.xmlはtomcatのアプリケーション配置先のWEB-INFフォルダの中にあります。
web.xmlに以下の記載を追記します。
<web-app ...> : <error-page> <error-code>400</error-code> <location>/error/40x.html</location> </error-page> <error-page> <error-code>403</error-code> <location>/error/40x.html</location> </error-page> <error-page> <error-code>404</error-code> <location>/error/40x.html</location> </error-page> : </web-app>
専用のエラーページ(40x.html)はlocationタグで場所を指定します。400、403、404エラーのときに40x.htmlを表示させる設定です。
40x.htmlファイルをerrorファルダの中に格納しておくのですが、errorフォルダはtomcatのアプリケーション配置先に置くことに注意してください。この例だとerrorフォルダとWEB-INFフォルダは同じ階層となります。
専用のエラーページを表示させてみたときの画面です。
同一サーバー上でtomcatをnginxと連携させる場合もあるかと思います。その際にnginxで表示するエラーもtomcatと同じにしておくと良いかもしれません。
nginx.confのserverディレクティブに以下の記載をします。
server { : location / { : proxy_pass http://localhost:8080/; } : error_page 400 403 404 /40x.html; location = /40x.html { root (tomcatのアプリケーション配置先)/error; } }
nginxがtomcatのアプリケーション配置先にあるerrorフォルダ、および、40x.htmlを参照できるようにしておいてください。nginxの起動ユーザーをtomcatの起動ユーザーと同じにしておけば問題ないかと思います。nginxの起動ユーザーはnginx.confのuserディレクティブで指定します。