Ssl証明書を持つApacheサーバーと一緒にポート8000でNodeJSサーバーを実行しようとしています。仮想ホストとproxypassを使用して、ApacheWebサイトから/ nodeパスを介してNodeJSサーバーにリンクしています。
私が正しい問題は、Expressプラグインで提供されるページをロードできるが、SocketIO接続からのポーリングが失敗するように見えることです。私はたくさんのことを試しましたが、それを機能させることができないようです。
聞くようにクライアントを設定した場合
var socket = io.connect('example.com:8000', {secure: false});
私のコンソールはこれに沿って何かを示しています:
socket.io-1.3.7.js:2 GET https://example.com:8000/socket.io/?EIO=3&transport=polling&t=1451044647116-0 net::ERR_CONNECTION_CLOSED
また、NodeJSサーバーでSSLを使用する方法を知っていますが、Apacheサーバーでポート443を介してリッスンしているため、機能しないと思います。
これが可能かどうか、および/またはこれを設定する方法を知っている人はいますか?
編集:私がUbuntu 14.04x64で実行していることを言及するのを忘れました
私はついにそれを理解しました。
サーバー側nodeJSアプリで次のコードを実行します。
var options = {
key: fs.readFileSync('/home/certificates.key'),
cert: fs.readFileSync('/home/certificates.crt'),
requestCert: true
};
var server = require('https').createServer(options, app);
var io = require('socket.io').listen(server);
server.listen(8000);
console.log('Server started at port: 8000');
クライアント側私は、接続を確立するために以下を使用するだけのApacheサーバーを使用してページを提供します。
var socket = io.connect('example.com:8000', {secure: true});
この方法で8000のようなポート上でSSLを実行できることに気づきませんでした。