2015年3月15日日曜日

Nginxがerror_pageで設定した内容を返さない件

サイトのメンテナンスのためnginxがメンテナンスページを返すようにしようとググってみたら、サンプルがたくさんでてきたのでその通りにやってみたが、なぜか設定したメンテナンスページが表示されない。Nginxが吐く503のレスポンスの文字列が出てしまう。

調べてみるとerror_pageディレクティブの設定が反映されないのはNginxのバグではないかとのこと(http://serverfault.com/questions/326877/nginx-error-page-directive-is-silently-ignored)。


returnをlocationの中にいれると正常に表示された。


server {
listen 80;
server_name lw.aroundtheclock.jp;

error_page 503 /maintenance/maintenance.html;
location /maintenance/ {
root /var/www/html/;
}

location / {
return 503;
#proxy_pass http://localhost:3010;
}
}


余談

/tmp/do_maintenance があればメンテナンスページを返すようにnginxの設定するサンプルがたくさんでてきた。リクエストのたびにファイルの存在を確認しにいくのってどうなのか思う(きっと対した負荷じゃないんだろうけど)。今回は個人サイトなのでメンテナンスページなんて出さなくてもいいくらいだし、今後も滅多に使わないだろうからそこらへんの仕組みはいれず使うときはconfで設定をコメントアウトを解除してreloadするつもり。

0 件のコメント:

コメントを投稿