0

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?

  • What part of this is cumbersome? What problem does it cause you? – Michael Hampton Mar 19 '18 at 16:53
  • I edited the question to detail better what I'm aiming for. – Fleuri Mar 19 '18 at 17:10
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.

  • 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 includes. See these sample configurations. – 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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.