Nginx在443上,但节点处理ssl证书

时间:2017-05-05 15:06:49

标签: node.js ssl nginx

我们有nginx运行两个服务器(端口80和443)。这些proxy_pass我们的上游:

   upstream app_nodes {
       ip_hash;
       server 127.0.0.1:3000;
       server 127.0.0.1:3001;
    }

    upstream app_nodes_https {
      ip_hash;
      server 127.0.0.1:8000;
      server 127.0.0.1:8001;
    }

对于80端口,这很好。但是,对于443,这会失败,因为我们没有在nginx中定义ssl证书。我们需要我们的node.js应用程序(侦听端口8000/8001)来处理证书以动态支持许多域。

有没有办法让nginx简单地代理我们的上游服务器并让它们处理ssl?

谢谢

编辑:这是我们443的服务器块

server {
       listen 443;

       gzip on;
       gzip_types text/plain application/json application/ocet-stream;

       location / {
          proxy_pass      https://app_nodes_https;    
          add_header      X-Upstream  $upstream_addr;
          add_header      X-Real-IP $remote_addr;       
          include         /etc/nginx/proxy_params;
       }

}

执行nginx -t实际上会出现https protocol requires SSL support

错误

1 个答案:

答案 0 :(得分:0)

解决方案是使用流:

stream {
        upstream https_stream {
          hash $remote_addr;
          server 127.0.0.1:8000;
          server 127.0.0.1:8001;
        }
        server {
          listen 443;
          proxy_pass https_stream;
        }
}

这假设您在8000/8001上运行您的应用实例。