我在亚马逊实例上设置了一个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配置实现这一目标?
谢谢
答案 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;
}
}