[英]Nginx redirect to static html when Proxy NodeJS server not working (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配置實現這一目標?
謝謝
經過仔細搜索后,我找到了答案......
當節點服務器關閉並且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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.