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

标签 node.js nginx static offline

我在 Amazon 实例上设置了一个 NodeJS 服务器,为一些 Web 应用程序提供服务。我正在使用 Nginx 服务器来处理内部请求并将请求路由到 Node 服务器。我用于 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 配置实现这一点?

谢谢

最佳答案

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

当 Node 服务器关闭并且 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;
    }
}

关于node.js - 当代理 NodeJS 服务器不工作(离线)时,Nginx 重定向到静态 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28169014/

相关文章:

ruby-on-rails - 在 Rails 3.2 的生产模式下检查 500 内部服务器错误

java - 将处理类的所有实例的HashMap的方法放在单独的类中

node.js - 带有 etags 的 s3 流式传输( Node )

Nginx - 我真的需要站点可用和站点启用的文件夹吗?

php - 是否可以在同一个 Dockerfile 中包含 PHP + MongoDb + Nginx?

c++ - 冗余静态数据

c# - 何时在 C# 中使用静态类

javascript - SASS 部分导入在 react 中不起作用

javascript - Grunt 连接 + modRewrite

javascript - 如何获得 Mongoose 属性(property)的总和?