一尘不染

nginx代理传递节点,SSL?

node.js

我的nginx服务器实际上是使用以下简单的代理来代理节点后端(侦听端口3000):

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

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

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


阅读 207

收藏
2020-07-07

共1个答案

一尘不染

如果您使用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; 
      } 
   }
2020-07-07