2016-10-25 8 views
0

ノードサーバーをnginxの背後に置いています。私はそれがこのように働いていますが、私はそれが最善ではないと考えている。app.jsノード構成ノード:不良ゲートウェイ

app.use(session({ 
     name: app_config.get('session.name'), 
     secret: env.get("SESSION_SECRET"), 
     cookie: {httpOnly: true, secure: true }, 
     store: new MongoStore({ mongooseConnection: mongoose.connection, 
     touchAfter: app_config.get('session.touchAfter') 
         }) 
    })); 

nginxの中のbin/WWW

server = https.createServer(config, app).listen(3210,'127.0.0.1'); 
    server.on('error', onError); 
    server.on('listening', onListening); 

、demo.server.com

server { 
     listen 0.0.0.0:443; 
     server_name demo.server.com; 
     access_log /var/log/nginx/demo.server.com.log; 
     location/{ 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header HOST $http_host; 
      proxy_set_header X-NginX-Proxy true; 
      proxy_pass https://127.0.0.1:3210; 
      proxy_redirect off; 
     } 
    } 

これは完全に機能します。私の理解では、ノードサーバーはhttpsモードである必要はありません。私は多くのグーグル・グーグルの後に続くように修正しましたが、もちろん動作しません - 私は "502悪いゲートウェイ"を取得します。サーバーが起動し、netstat -aは何かが3210ポートでリッスンしていることを示します。ビン/ WWWで

app.js

app.use(session({ 
     name: app_config.get('session.name'), 
     secret: env.get("SESSION_SECRET"), 
     cookie: {secure: true }, 
     store: new MongoStore({ mongooseConnection: mongoose.connection, 
     touchAfter: app_config.get('session.touchAfter') 
         }) 
    })); 

nginxので

server = http.createServer(config, app).listen(3210,'127.0.0.1'); 
    server.on('error', onError); 
    server.on('listening', onListening); 

、demo.server.com

server { 
     listen 0.0.0.0:443; 
     server_name demo.server.com; 
     access_log /var/log/nginx/demo.server.com.log; 
     location/{ 
      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 $scheme; 
      proxy_set_header Host $http_host; 
      proxy_set_header X-NginX-Proxy true; 
      proxy_read_timeout 5m; 
      proxy_connect_timeout 5m; 
      proxy_pass http://127.0.0.1:3210; 
      proxy_redirect off; 
     } 
    } 

nginxのエラーログは言う:

2016/10/25 10:46:34 [error] 17278#0: *2 upstream prematurely closed connection while reading response header from upstream, client: xxxxx, server: demo.server.com, request: "GET /itdemo HTTP/1.1", upstream: "http://127.0.0.1:3210/itdemo", host: "demo.server.com" 

私は間違って何をしていますか?任意のポインタに感謝し、プレーンなHTTPサーバの場合

+0

を私は入れていない場合は動作しますサーバーがまだ安全な場合は?それはnginxがSSLによって保護されているからです。 – Pat070

答えて

0

を助けるが、createServer()は一つだけの引数ではなく、2受け入れ:「::{真確保}クッキーを」しかし、私は疑問に思う

server = http.createServer(app).listen(3210,'127.0.0.1'); 
+0

本当ですか?私は、サーバーを直接呼びたくない場合は、両方の引数を置くことができると読んでいます。 – Pat070

+0

@ Pat070かなり確信しています(私は言っているべきですが_は "**多くても1つの引数_を受け入れます**)[docsを参照](https://nodejs.org/api/http.html#http_http_createserver_requestlistener)。 D – robertklep

+0

がhttpsであることが原因ではないと思われます。https://demo.server.com:3210 これはhttpでどのように行われますか? http://demo.server.com:3210/mydb 引数でノードサーバーを直接呼び出すと、それは動作しません - 私が望むものです – Pat070

関連する問題