2017-01-23 27 views
2

Nginxを使ってポート80に静的コンテンツを公開し、NodeJSに433リダイレクト(SSLあり)を公開しています。次のように nginxの構成は次のとおりNginxとNodeJSでHTTPSを設定する

NodeJSと
server { 
    listen 443 ssl; 

    ssl_certificate /opt/projetos/nodejs-project-ssl/vectortowns-cert.pem; 
    ssl_certificate_key /opt/projetos/nodejs-project-ssl/vectortowns-key.pem; 
    ssl_protocols  SSLv3 TLSv1; 
    ssl_ciphers HIGH:!aNULL:!MD5; 

    server_name 127.0.0.1:443; 

    location/{ 
      proxy_pass https://127.0.0.1:8443; 
      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; 
    } 

}

、エクスプレス、およびEJSは、私はまた、HTTPSを使用するように構成された、ポート8443への動的コンテンツを公開しています。下記のjavascriptコード(質問に重要な部分のみ)を参照してください。

// other codes... 
/* Enable https */ 
var privateKey = fs.readFileSync('/opt/projetos/nodejs-project-ssl/vectortowns-key.pem'); 
var certificate = fs.readFileSync('/opt/projetos/nodejs-project-ssl/vectortowns-cert.pem'); 
var credentials = { 
    key: privateKey, 
    cert: certificate 
}; 
// other codes... 
/* Controllers */ 
app.use(require('./controllers')); 
https.createServer(credentials, app).listen(
    configuration.server.port, 
    configuration.server.address, 
    function(){ 
     logger.info('Server started: ' + configuration.server.address + ':' + configuration.server.port); 
}); 

私の質問は以下のとおりです。

  1. 私はnginxのとNodeJSまたはちょうどそれらのいずれかで、SSL証明書とキーを設定する必要がありますか?
  2. 私が必要なのは、何が最善のオプション(NodeJSまたはNginx)でしょうか?

ありがとうございました!

答えて

7

Nginx(およびNginxのみ)をSSLに使用することが標準です。あなたが設定すると、Nginxはリバースプロキシとして動作するので、ポート443の暗号化されたデータに対してローカルの暗号化されていないデータをプログラムに与えるので、ノードプログラムでSSLを使用すると動作しません。

+0

ありがとう、私はそれを間違っていた。私は今調整する:) – lgapontes