2016-07-22 26 views
0

我目前遇到一些配置問題與NGINX,我不斷收到502錯誤,而不是NGINX回落到不同的目錄,如果服務器關閉或目錄不存在。Nginx後備與Node.js

我在端口上運行Node.js應用程序:3000,設置了SSL,並將所有HTTP請求重定向到HTTPS。鑑於我的node.js應用程序處於脫機狀態,如果可能,我希望將客戶端發送到默認的NGINX根目錄/usr/share/nginx/htmlindex index.htm index.html

我試圖讓端口3000上的nodejs應用程序顯示在/上,但是在服務器關閉的情況下,在NGINX默認目錄下回退並顯示index.html。任何人都可以幫助或引導我完成這個過程嗎?

謝謝

編輯:我已經試過jfriend00在評論中說,但現在我的proxy_pass似乎並沒有工作。無論我的服務器是否在運行,它現在都會默認爲500.html。我已附加了我的nginx.conf文件,希望有任何幫助。

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

還有一個類似的問題沒有答案[http://stackoverflow.com/questions/15142692/varnish-nginx-node-js-static-nginx-html-pages-with-node-js-fallback](here) 。另一位提問者經歷了一種非常規的方法。 – Bryan

+0

這樣做的一種方法:http://serverfault.com/questions/511109/nginx-local-fallback-error-page-if-proxy-destination-is-unavailable – jfriend00

+0

嗯。我會去看看它,但是一眼看出來,把root放在位置塊裏面不錯吧? @ jfriend00 – Bryan

回答

0

添加error_page的工作方式與上面所做的一樣,並且成功回退。謝謝@ jfriend00。

如果您將它部署到實時服務器,您可能需要檢查this,因爲我很難弄清爲什麼我的proxy_pass和我的NGINX配置在部署在EC2上的CentOS上不起作用。它與error_page無關。