2012-04-29 10 views
26

mio server nginx è in realtà il mio proxying backend nodo (che in ascolto sulla porta 3000) con un semplice:Nginx proxy pass Nodo, SSL?

location /api/ { 
proxy_pass http://upstream_1; 
} 

Dove upstream_1 è il mio gruppo nodo definito in nginx.conf (sulla porta 3000).

Devo aggiungere SSL su connessioni http, quindi ho la seguente domanda: devo solo configurare nginx per abilitare ssl? E automaticamente "decifrerà" la richiesta e la passerà non crittografata al nodo che sarà in grado di gestirla normalmente? O devo configurare Nodejs per supportare anche ssl?

risposta

72

Se si utilizza nginx per gestire SSL, il server del nodo utilizzerà semplicemente http.

upstream nodejs { 
      server 127.0.0.1:4545 max_fails=0; 
    } 

    server { 
     listen 443; 
     ssl on; 
     ssl_certificate newlocalhost.crt; 
     ssl_certificate_key  newlocalhost.key; 
     server_name nodejs.newlocalhost.com; 

     add_header Strict-Transport-Security max-age=500; 

     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; 
     } 
    } 
+0

Grazie per la risposta rapida Bill! Quindi immagino sia ok? Dal momento che immagino che non sia così facile spoofingare il proxy da nginx al nodo? – spacenick

+0

Sì, questa è in realtà l'impostazione consigliata. Nginx dovrebbe trovarsi sullo stesso computer del server nodo o comunicare al server nodo tramite un IP interno, quindi ora sarebbe il modo di spoofarlo. – Bill

+0

Grazie a @Bill! :) – spacenick