2016-07-22 31 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无关。