Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nginx位于443上,但节点处理ssl证书_Node.js_Ssl_Nginx - Fatal编程技术网

Node.js Nginx位于443上,但节点处理ssl证书

Node.js Nginx位于443上,但节点处理ssl证书,node.js,ssl,nginx,Node.js,Ssl,Nginx,我们有运行两台服务器的nginx(端口80和443)。这些proxy\u 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

我们有运行两台服务器的nginx(端口80和443)。这些
proxy\u 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协议需要SSL支持

解决方案是使用流:

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上运行应用程序实例。

因为如果nginx不是SSL端点,您无法查看流量的HTTP部分,因此您需要使用普通TCP进行负载平衡。看,它说TCP是默认的,大概只是
listen443我们使用的是TCP