簡體   English   中英

當代理NodeJS服務器不工作時,Nginx重定向到靜態html(離線)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM