在node.js中,使用带有多个域名的ssl和一个ip地址

时间:2011-12-02 06:42:28

标签: linux node.js

用于Linux中的Apache,其中每个使用ssl的域名都需要自己的ip地址。

如果使用node.js并且根本不使用Apache,这仍然是正确的吗?

2 个答案:

答案 0 :(得分:3)

在node.js中也适用与Apache相同的限制 - 它们与您正在使用的特定服务器软件无关,它们是http和TLS / SSL协议中固有的。

话虽如此,有两种方法可以从单个IP地址为多个域运行SSL。我不知道node.js支持其中任何一个的状态,但对于第一个替代方案应该无关紧要。

首先,您可以获得一个涵盖您要使用的所有域名的SSL证书 - 如果它们是同一域的所有子域或使用Subject Alternative Names(SAN)的域,则为通配符如果他们不是。请注意,某些较旧的Web浏览器不支持SAN,尤其是某些智能手机。

其次,您可以使用Server Name Indication(SNI)配置多个SSL证书,因为它扩展了SSL协议,使主机名在完成密钥交换之前可供服务器使用。浏览器对SNI的支持不如SAN,特别是它不适用于Windows XP上的任何Internet Explorer版本。

答案 1 :(得分:1)

此链接显示了如何使用SNI方法使用nginx。

https://www.digitalocean.com/community/articles/how-to-set-up-multiple-ssl-certificates-on-one-ip-with-nginx-on-ubuntu-12-04

您也可以让nginx执行https和文件服务,并将其反向代理转换为node.js以进行api工作,如下所示:

https://stackoverflow.com/a/15008873/151312