1

I am hosting multiple Angular apps with Nginx. All of them run in their own containers and if a container is offline, I display a maintenance page located at /var/www/maintenance/. To do this, my virtual host configuration files are generally like this (Irrelevant parts omitted):

server {

        ...  

        location / {
        proxy_pass http://127.0.0.1:8099;
        proxy_set_header X-FORWARDED-FOR $proxy_add_x_forwarded_for;
        proxy_set_header X-FORWARDED-HOST $host;
        proxy_set_header X-FORWARDED-PROTO $scheme;
        proxy_connect_timeout 1;
        proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;
        proxy_intercept_errors on;
        try_files $uri $uri/ /index.html;
        }

        error_page 403 501 502 503 504 /maintenance.html;
        location = /maintenance.html {
            root /var/www/maintenance;
        }
}

This works fine, but is cumbersome in case I have to make changes. How could I implement this functionality in the main nginx.conf or make it otherwise more maintainable? Could I, instead of including the maintenance page configuration in every virtual host configuration, include it once in the nginx.conf which in turn includes all the virtual host configurations?

Fleuri
  • 145
  • 12

1 Answers1

1

Add a new configuration file maintenance.conf, which contains:

location = /maintenance.html {
    root /var/www/maintenance;
}

And then use

include /path/to/maintenance.conf;

in your virtual host configuration.

Tero Kilkanen
  • 34,499
  • 3
  • 38
  • 58
  • I was thinking, instead of including the maintenance configuration in every virtual host configuration, I could only include it in nginx.conf which in turn includes all the virtual host configurations. Is that possible? – Fleuri Mar 19 '18 at 17:07
  • @Fleuri Unfortunately `location` is only valid inside `server` or another `location`. But you can get very far with `include`s. See [these sample configurations](https://serverfault.com/a/896555/126632). – Michael Hampton Mar 19 '18 at 17:13
  • Too bad then. At least this answer makes the configuration a bit more sleeker. Thanks alot! I mark this question answered. – Fleuri Mar 19 '18 at 17:20