2012-04-29 15 views
26

mi servidor nginx es en realidad de proxies mi backend nodo (que escucha en el puerto 3000) con un simple:nginx proxy pass Node, SSL?

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

Dónde upstream_1 es mi nodo de clúster definido en nginx.conf (en el puerto 3000).

Voy a tener que agregar SSL a través de conexiones http, por lo que tengo la siguiente pregunta: ¿solo necesito configurar nginx para habilitar ssl? ¿Y automáticamente "desencriptará" la solicitud y la pasará sin encriptar a Node, que podrá manejarlo normalmente? ¿O necesito configurar Nodejs para que sea compatible con ssl también?

Respuesta

72

Si está usando nginx para manejar SSL, entonces su servidor de nodo simplemente usará 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

Gracias por la respuesta rápida Bill! ¿Entonces supongo que está bien? ¿Desde que creo que no es tan fácil burlar el proxying desde nginx al nodo? – spacenick

+0

Sí, esta es en realidad la configuración recomendada. Nginx debe estar en la misma máquina que el servidor de nodo o comunicarse con el servidor de nodo a través de una IP interna, por lo que ahora habrá una forma de suplantarlo. – Bill

+0

¡Gracias @Bill! :) – spacenick

Cuestiones relacionadas