当代理NodeJS服务器不工作时,Nginx重定向到静态html(离线)

时间:2015-01-27 11:05:56

标签: node.js nginx static offline

我在亚马逊实例上设置了一个NodeJS服务器,为一些网络应用程序提供服务。我正在使用Nginx服务器来处理请求并将请求内部路由到节点服务器。使用这个我用于Nginx的设置,一切正常:

server {
    listen 80;

    server_name mydomain.com;

    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
    location ~* \.(js|ico|css|jpg|jpeg|eot|svg|ttf|woff)$ {
        root /home/user/webapp/public;
    }
}

我现在要做的是,每当node.js服务器没有响应时,就会提供一个静态html文件。就像我更新代码并需要重新启动node.js服务器或类似的东西一样。

如何使用nginx配置实现这一目标?

谢谢

1 个答案:

答案 0 :(得分:3)

经过仔细搜索后,我找到了答案......

当节点服务器关闭且nginx尝试将流量重定向到它时,会触发502 BAD GATEWAY响应。因此,我们可以使用以下命令处理备用维护页面来处理此响应:

error_page 502 503 /maintenance.html;

无论我们想要什么,我们都可以称之为“maintenance.html”。这是发生此错误时客户端将被重定向的URI。下面我们在另一个位置对象中处理redire uri。

所以改变的配置是:

server {
    listen 80;

    server_name mydomain.com;

    error_page 502 503 /maintenance.html;

    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
    location ~* \.(js|ico|css|jpg|jpeg|eot|svg|ttf|woff)$ {
        root /home/user/webapp/public;
    }
    location = /maintenance.html {
        root /PATH_TO_MAINTENANCE_HTML_FILE;
    }
}