2012-04-29 46 views
26

我的nginx的服务器是否确实进行代理我的节点的后端(其监听端口3000)用一个简单的:nginx代理传递节点,SSL?

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

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

我必须在http连接上添加SSL,所以我有以下问题:我只需要配置nginx来启用ssl?它会自动“解密”请求并将其解密传递给Node,通常它可以处理它?还是我需要配置Nodejs以支持ssl?

回答

72

如果您使用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; 
     } 
    } 
+0

感谢您的快速回答比尔!所以我猜这没关系?既然我猜想从nginx到node的欺骗代码并不那么容易? – spacenick

+0

是的,这实际上是推荐的设置。 Nginx应该与节点服务器位于同一台机器上,或者通过内部IP与节点服务器通信,因此现在有办法欺骗它。 – Bill

+0

谢谢@Bill! :) – spacenick