2
0
mirror of https://github.com/tmiland/Nginx-Maintenance-Mode synced 2024-09-18 09:41:35 +02:00
Easily toggle on or off maintenance mode with nginx
Go to file
2019-03-28 19:53:28 +01:00
img Create maintenance.png 2019-03-28 19:51:56 +01:00
.gitattributes Initial commit 2019-03-28 17:36:38 +01:00
LICENSE Initial commit 2019-03-28 17:36:38 +01:00
maintenance-page.conf Create maintenance-page.conf 2019-03-28 19:53:28 +01:00
maintenance.sh Create maintenance.sh 2019-03-28 19:53:23 +01:00
README.md Update README.md 2019-03-28 19:53:25 +01:00

Nginx Maintenance Mode

GitHub release licence Bash

Easily toggle on or off maintenance mode with nginx

Screenshots

screenshot

Installation

Download and execute the script:

$ git clone https://github.com/tmiland/Nginx-Maintenance-Mode.git
$ cd Nginx-Maintenance-Mode
$ cp -rp ./maintenance-page.conf /etc/nginx/snippets/
$ git clone https://github.com/alexphelps/server-error-pages.git /etc/nginx/html/server-error-pages
$ cp -rp /etc/nginx/html/server-error-pages/_site/maintenance-page.html /etc/nginx/html/server-error-pages/_site/maintenance-page_off.html
$ nginx -t # Check for errors, if found, correct them and;
$ chmod +x maintenance.sh
$ ./maintenance.sh your.hostname.com on # Or
$ ./maintenance.sh your.hostname.com off

Add to server directive

## Nginx Maintenance Mode
include snippets/maintenance-page.conf;
  • Add to each virtual server in /etc/nginx/sites-available you want to enable maintenance mode on.
  • Else, add to nginx.conf.

Usage

$ ./maintenance.sh [hostname] [on/off]

*** Note: [hostname] must match the hostname in your.hostname.com.conf/nginx.conf ***

E.G

server {
	server_name your.hostname.com;
  }
  • When maintenance mode is toggled on, maintenance-page_off.html will be re-named to $server_name-maintenance-page_on.html. E.g: your.hostname.com-maintenance-page_on.html
  • This way you can use this with multiple virtual servers, and easily toggle on/off maintenance mode individiually for each site.

Advanced usage

$ ./maintenance.sh my.hostname.com on
$ ./maintenance.sh my-other.hostname.com on
$ ./maintenance.sh my.hostname.com off
$ ./maintenance.sh my-other.hostname.com off

Logic in maintenance-page.conf


if (-f /etc/nginx/html/server-error-pages/_site/$server_name-maintenance-page_on.html)
{
  return 503;
}
error_page 503 @maintenance;
location @maintenance
{
  rewrite ^(.*)$ /$server_name-maintenance-page_on.html break;
  root /etc/nginx/html/server-error-pages/_site;
}

  • If your.hostname.com-maintenance-page_on.html exists, a error 503 is returned.
  • If not, operation is back to normal.

Credits

Donations

  • PayPal me
  • [BTC] : 3MV69DmhzCqwUnbryeHrKDQxBaM724iJC2
  • [BCH] : qznnyvpxym7a8he2ps9m6l44s373fecfnv86h2vwq2

Web Hosting

Sign up for web hosting using this link, and receive $100 in credit over 60 days.

DigitalOcean

Disclaimer

*** Use at own risk ***

License

MIT License Image

MIT License