nginx代理传递节点,SSL?

时间:2012-04-29 20:21:16

标签: node.js nginx reverse-proxy

我的nginx服务器实际上是用一个简单的代理我的节点后端(它在端口3000上侦听):

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

其中upstream_1是我在nginx.conf中定义的节点集群(在端口3000上)。

我将不得不通过http连接添加SSL,所以我有以下问题:我是否只需要配置nginx来启用ssl?它会自动“解密”请求并将其解密传递给Node,它将能够正常处理它吗?或者我是否还需要配置Nodej以支持ssl?

1 个答案:

答案 0 :(得分:75)

如果您使用nginx来处理SSL,那么您的节点服务器将只使用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; 
      } 
   }