我在 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/