Pro Tip: Redirecting to a Custom Nginx Maintenance Page
Posted by Peter Baumgartner on February 12, 2010. Filed under pro tip, sysadmin
Here’s one I struggled with a bit while upgrading lincolnloop.com yesterday.
Scenario: You need to take your site offline and want to redirect all its traffic to a “down for maintenance” page. For search engine friendliness, that page should return a 503: Service Unavailable status code. Here’s the (not entirely intuitive) way to do that in Nginx:
server { listen 80; server_name mysite.com; root /var/www/mysite.com/; location / { if (-f $document_root/maintenance.html) { return 503; } ... # the rest of your config goes here } error_page 503 @maintenance; location @maintenance { rewrite ^(.*)$ /maintenance.html break; } }
Now whenever you need to take your site offline, simply create the file maintenance.html in the $document_root (in our case, /var/www/mysite.com). If the file exists, Nginx will serve it with a 503 status code, if not, it will proceed as usual.
