Apr 24, 2012
tom

nginx error_page for 502 Bad Gateway errors

Question

Here is my server configuration:

    server {
            listen 0.0.0.0;
            server_name dev.host.com;            location / {
                    include /etc/nginx/proxy.conf;
                    proxy_pass http://127.0.0.1:5000;
                    proxy_redirect default;                    error_page 502 =200 @maintenance;
            }            location ^~ /(img|js|css)/ {
                    root /path/to/application/assets;
                    expires max;
                    break;                    error_page 404 =302 /;
            }            location @maintenance { 
                     root /path/to/static/offline/files;
                     try_files $uri $uri/ /index.html =503;
            }
    }

When the upstream app is not online, I am getting the default nginx 502 page for the root path (that is: GET /). Any idea why this is happening? I’d like the root path to respond with the maintenance page just like any other request path.

Asked by mikeycgto

Answer

The devils in the details; my @maintenance named location was not setup correctly. Specifically, the send argument ($uri/) to try_files was causing the problem. Here is the correct named location:

location @maintenance { 
    root /path/to/static/offline/files;
    try_files $uri /index.html =503;
}
Answered by mikeycgto

No related posts.

Leave a comment