Apache和NodeJS over SSL

ing*_*ede 9 apache ssl-certificate node.js

我需要从HTTP切换到HTTPS才能使用getUsermedia进行webrtc实现.我已经在我的Apache 2.2.22版本上安装了证书并使其正常运行.

在我主持NodeJS的网站上使用.也许不是理想的设置,但是当客户端上的socket.io想要与NodeJS服务器通信时,我遇到了问题.

在控制台中显示以下消息:

GET https://mydomain.nl:1900/socket.io/?EIO=3&transport=polling&t=1449219985177-166 net::ERR_CONNECTION_CLOSED 
Run Code Online (Sandbox Code Playgroud)

对我来说很明显,NodeJS服务器应用程序无法通过HTTPS处理请求,因为它是一个HTTP服务器.

我想改变该服务器,以便能够使用apache webserver上已有的SSL来提供HTTPS请求.

这有可能吗?

FrW*_*FrW 17

我建议看看apache的mod_proxy.这将允许您通过apache SSL管道运行外部请求.node.js只能在没有ssl支持的localhost接口上运行,因为它是由apache代理的.我配置一个vhost它可能看起来像这样:

<VirtualHost *:443>
  ServerName www.yourserver.com
  DocumentRoot /var/www/vhosts/www.yourserver.com/public_html

  CustomLog <LOG-PATH> combined
  ErrorLog <ERROR-LOG-PATH>

  # Example SSL configuration
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  SSLCertificateFile "<CERT-PATH>/server.crt"
  SSLCertificateKeyFile "<CERT-PATH>/server.key"

  ProxyPass /<PATH>/ http://localhost:1900/
  ProxyPassReverse /<PATH>/ http://myserver:1900/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

您的要求将如下所示:

GET https://mydomain.nl/<PATH>/?.... 
Run Code Online (Sandbox Code Playgroud)

其中<PATH>的值与vhost config的<ProxyPass>指令中的值相同.