Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nginx proxy pass Node, SSL?

my nginx server is actually proxying my node backend (which listens on port 3000) with a simple:

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

Where upstream_1 is my node cluster defined in nginx.conf (on port 3000).

I'm gonna have to add SSL over http connections, so I have the following question: do I only need to configure nginx to enable ssl? And it will automatically "uncrypt" the request and pass it uncrypted to Node which will be able to handle it normally? Or do I need to configure Nodejs to support ssl as well?

like image 433
spacenick Avatar asked Apr 29 '12 20:04

spacenick


1 Answers

If you're using nginx to handle SSL, then your node server will just be using 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;        }     } 
like image 117
Bill Avatar answered Oct 02 '22 00:10

Bill