I need to add maintenance page to some rails app, running with passenger and nginx. Here’s some config and steps.
You just need to add static html file to app_root/public/maintenance.html – and I assume css files on /assets url.
so, here’s nginx config:
server { listen 80; server_name = www.example.com; root /home/deploy/www.example.com/public; passenger_enabled on; passenger_min_instances 5; set $maintenance 0; # is there maintenance file set? if (-f $document_root/../tmp/maintenance.txt) { set $maintenance 1; } # exclude /assets if ( $uri ~* ^/assets\/\.* ) { set $maintenance 0; } # in maintenance mode - send 503 status if ($maintenance = 1) { return 503; } # maintenance mode error_page 503 @503; # rewrite everything to maintenance.html location @503 { rewrite ^ /maintenance.html last; break; } }
setting maintance mode is really simple – set app_root/tmp/maintenance.txt file – when escaping, just remove that file.