2016-07-22 16 views
0

Ich bin im Moment in einigen Konfigurationsproblemen mit NGINX, wo ich immer einen 502 Fehler bekomme, anstatt NGINX in ein anderes Verzeichnis zurückzufallen, wenn entweder der Server ausgefallen ist oder das Verzeichnis nicht existiert.Nginx Fallback mit Node.js

Ich verwende eine Node.js-Anwendung auf Port: 3000, habe SSL eingerichtet und habe alle HTTP-Anfragen an HTTPS umleiten. Angesichts des Szenarios, in dem meine Anwendung "node.js" offline ist, möchte ich den Client nach Möglichkeit zum standardmäßigen NGINX-Stammverzeichnis /usr/share/nginx/html senden.

Ich versuche, die Nodejs-Anwendung auf Port 3000 auf / angezeigt werden, aber im Falle, dass der Server heruntergefahren ist, auf NGINX Standardverzeichnis zurückfallen und stattdessen die index.html dort angezeigt. Kann mir jemand helfen oder mich durch diesen Prozess führen?

Danke

bearbeiten: Ich habe versucht, jfriend00 in den Kommentaren gesagt, aber jetzt meine proxy_pass scheint nicht zu funktionieren. Es würde nun standardmäßig auf 500.html gesetzt, egal ob mein Server läuft oder nicht. Ich habe meine nginx.conf-Datei angehängt, ich würde mich über jede Hilfe freuen.

events { 
    worker_connections 1024; 
} 

http { 

    upstream nodejs { 
      server <<INTERNAL-PRIVATE-IP>>:3000; #3000 is the default port 
    } 

    ... 

    server { 
     listen 80; 
     server_name <<PUBLIC-IP>>; 
     return 301 $scheme://<<DOMAIN>>$request_uri; 
    } 

    server { 
     listen 443; 
     ssl on; 
       server_name <<DOMAIN>>.com www.<<DOMAIN>>.com; 

       ... 

       location/{ 
        proxy_pass http://nodejs; 
        proxy_redirect off; 
        proxy_set_header Host $host ; 
        proxy_set_header X-Real-IP $remote_addr ; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; 
        proxy_set_header X-Forwarded-Proto https; 
      } 

      error_page 501 502 503 /500.html; 

      location = /500.html { 
       root /usr/share/nginx/html; 
      } 

     } 
} 
+0

Es gibt eine ähnliche Frage ohne Antwort [http://stackoverflow.com/questions/15142692/varnish-nginx-node-js-static-nginx-html-pages-with-node-js-fallback] (hier) . Der andere Fragesteller durchlief einen unkonventionellen Ansatz. – Bryan

+0

Eine Möglichkeit, es hier zu tun: http://serverfault.com/questions/511109/nginx-local-fallback-error-page-if-proxy-destination-is-unavailable – jfriend00

+0

Hmm. Ich werde es versuchen, aber auf einen Blick, ist es nicht schlecht, Root in den Standortblock zu setzen? @ jfriend00 – Bryan

Antwort

0

Hinzufügen der error_page funktioniert wie oben und es erfolgreich zurück. Danke @ jfriend00.

Wenn Sie es auf einem Live-Server bereitstellen, möchten Sie vielleicht this heraus überprüfen, da ich eine harte Zeit hatte herauszufinden, warum meine Proxy_pass und meine NGINX-Konfiguration nicht auf CentOS auf EC2 bereitgestellt funktionierte. Es hatte nichts mit der error_page zu tun.