2017-01-23 4 views
2

Ich verwende Nginx, um statischen Inhalt auf Port 80 und eine 433-Umleitung (mit SSL) zu dem NodeJS zu veröffentlichen. Die Konfiguration von Nginx ist wie folgt:Konfigurieren von HTTPS auf Nginx und 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; 
    } 

}

Mit NodeJS, Express und EJS, ich bin zu veröffentlichen dynamische Inhalte Port 8443, auch die Verwendung von HTTPS konfiguriert. Sehen Sie den JavaScript-Code unten (nur die Teile, die für die Frage wichtig sind).

// 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); 
}); 

Meine Fragen sind:

  1. Muss ich das SSL-Zertifikat und den Schlüssel in Nginx und NodeJS oder einfach nur in einem von ihnen konfigurieren?
  2. Wenn ich nur einen brauche, was wäre die beste Option (NodeJS oder Nginx)?

Vielen Dank !!

Antwort

7

Verwenden Sie Nginx (und nur Nginx) für SSL, das ist der Standard. Wie Sie festgelegt haben, arbeitet Nginx als Reverseproxy, so dass es Programm mit lokalen unverschlüsselten Daten für die gegebenen verschlüsselten Daten an Port 443 füttert, also wird es nicht funktionieren, wenn Sie auch SSL für Ihr Knotenprogramm verwenden

+0

Vielen Dank, Ich habe es falsch gemacht. Ich werde mich jetzt anpassen :) – lgapontes