什么是通过反向代理设置https节点服务器而不使用Apache或Nginx的最佳实践

我正试图获得通过节点代理访问的节点https服务器。

我买了证书,并有一个独立的https服务器工作正常。 最初由于多个证书在一个文件中有一些打嗝,但是这个post有助于:

http://stackoverflow.com/questions/16224064/running-ssl-node-js-server-with-godaddy-gd-bundle-crt. 

早些时候,我已经通过一个基于节点的反向代理nodejitsu的http代理模块的所有连接,它有效地代理http – > http。

现在,正如所料,在将目标服务器更改为https后,代理不起作用,因为它基本上是:

  client -> http-proxy(public IP) -> https connection(local IP) 

这实际上是https中寻求消除的中间人情况。

另外,我从https服务器得到以下错误:

  Error: Hostname/IP doesn't match certificate's altnames 

证书是正确的,因为HTTPS没有在中间代理正常工作。 从阅读一些post,我意识到以下应该工作:

  client -> https-proxy (Public IP) -> http connection (local IP) 

实际的本地服务器在哪里运行http和公共https。 这是基于http-proxy文档中的解释:

  https://github.com/nodejitsu/node-http-proxy 

在这篇文章中:

  https://nadeesha.silvrback.com/creating-a-https-proxy-in-node-js 

在http代理模块文档中,似乎有一个客户端的解释 – > https(代理公共IP) – > https(代理本地IP)。 如果是这样,我需要在目标https服务器上设置哪些证书?

在尝试这些可能性之前,我想知道: 什么是处理这个需求的标准最佳实践,以及如何在节点下实现它。 我不想介绍Nginx或Apache只是为了处理这个。 我完全偏离这里吗?

client -> https-proxy (Public IP) -> http connection (local IP)

如果https-proxy (Public IP) -> http connection (local IP)通过安全networking,即您的后端服务器未暴露于公共networking,则这是完全有效的安装。

client -> https-proxy (Public IP) -> httpS connection (local IP)

如果您处于专用networking中,那么这是不必要的,只需要执行encryption/解密步骤即可“过度”处理后端服务器和前端代理。 然而,在某些情况下可能需要这样做,而且现代计算机也不像以前那样扼杀encryption/解密。 但是,不pipe你是否感觉到,都取决于stream量。