Node.js socket.io,在3000端口上使用https

时间:2018-06-03 12:22:04

标签: javascript node.js ssl https socket.io

我想在https上运行node.js和socket.io。我将来自server.example.com的请求重定向到http://example.com:3000

<VirtualHost server.example.com:80>
    ProxyPass / http://example.com:3000/
</VirtualHost>

这样我可以访问socket.io.js文件

https://server.example.com/socket.io/socket.io.js

要测试node.js部分,请在控制台中打印socket.id。

图片:http://prntscr.com/jq81bz

这是客户端,我用这种方式连接到socket.io。

图片:http://prntscr.com/jq830z

客户端连接node.js服务器并打印socket.id。但是浏览器控制台中发生了很多错误。我认为客户想要因错误而再次连接。

图片:http://prntscr.com/jq82ib&lt; - 服务器的控制台在左侧

仅为一个连接打印这些日志。

1 个答案:

答案 0 :(得分:0)

您必须按照以下方式更改apache配置。

<VirtualHost *:443>
     ServerName mysite.com
     ServerAlias www.mysite.com

     SSLEngine on
     SSLProxyEngine On
     ProxyRequests Off

     SSLCertificateFile /etc/apache2/ssl/mysite.com.crt
     SSLCertificateKeyFile /etc/apache2/ssl/mysite.com.key
     SSLCertificateChainFile /etc/apache2/ssl/ca.cer

     DocumentRoot /var/www/errorPages

     ErrorDocument 503 /503.html
     ProxyPass /503.html !

     ProxyPass / http://localhost:3000/
     ProxyPassReverse / http://localhost:3000/


     RewriteEngine on
     RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
     RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
     RewriteRule .* ws://localhost:3000%{REQUEST_URI} [P]


</VirtualHost>