2017-10-19 23 views
0

socket.ioを使用できるように、nodejsのサブドメインを設定しています。私はhttpsでページを提供しています。サーバーが正しく機能するようになっています。ページが配信されます。それは問題ではありません。問題は、ソケットをクライアントに接続しようとするときです。私はこれをしばらく解決しようとしてきました。そして、私を助けることができる多くの有能な人がいると確信しています。Nodejsサーバーhttpsが実行されていますが、ソケットが接続されません(net :: ERR_CONNECTION_TIMED_OUT)

これは私が得る私のサイトhttps://reward.cshive.com

エラーメッセージです:

Error message

クライアント側

var socket = io.connect('https://reward.cshive.com:3000'); 

サーバー側

const https = require('https'); 
var fs = require('fs'); 
const options = { 
    key: fs.readFileSync('/etc/letsencrypt/live/reward.cshive.com/privkey.pem'), 
    cert: fs.readFileSync('/etc/letsencrypt/live/reward.cshive.com/cert.pem') 
}; 
var app = https.createServer(options, (req, res) => { 
    fs.readFile(__dirname + '/served.html', 
    function (err, data) { 
    if (err) { 
     res.writeHead(500); 
     console.log('Error loading page'); 
     return res.end('Error loading page'); 

    } 
    console.log('--Connection'); 
    res.writeHead(200); 
    res.end(data); 
    }); 
}) 



var server = app.listen(3000, function(err) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log("Listening on port 3000"); 
    } 
}); 
var io = require('socket.io').listen(server); 
+0

あなたは 'The page is served'と言うとき、どのページを意味しますか?私は当初、(serve.htmlファイルの)コードに記述されているページを意味すると仮定していましたが、私はそのファイルにアクセスできないようです。私はポート3000から何の応答も得られないので、プロキシやファイアウォールの問題から、サーバが稼働していなくても簡単なものまで何でもかまいません。 – skirtle

+0

申し訳ありませんが、私はさらに明確にすべきでした。つまり、serve.hというファイルはノードによって提供されています。私はこれを知っている。なぜなら、「node server.js」を実行しないと、nginxから「502 bad gateway」が得られるからです。私はproxy_passを設定してサイト内の私のロケーションブロックのポート3000を介したリクエストを可能にしました - 利用可能です。私はそれが事件を助けるならば私が学校から戻ってくるときに設定を追加します。しかし、ファイアウォールはどういう意味ですか?どれ? –

+1

私は自分で試したことはありませんが、これは、ポート3000でNodeを直接世界に公開しようとするよりも、nginxを使ってすべてをプロキシするのに便利かもしれないようです。https://gist.github.com/uorat/10b15a32f3ffa3f240662b9b0fefe706 – skirtle

答えて

0

socket.ioするためのパスはそれが

location /socket.io-client/ { 
      proxy_pass http://node_server; 
      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection "upgrade"; 
      proxy_redirect off; 

      proxy_buffers 8 32k; 
      proxy_buffer_size 64k; 

      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header Host $http_host; 
      proxy_set_header X-NginX-Proxy true; 
     } 

/socket.io-client/だったと私をchange.Forかもしれない、サーバー部でこれを入れて、あなたの

でこれを試してみてくださいこの

upstream node_server { 
    server 127.0.0.1:8080; 
    keepalive 15; 
} 

はまた、この

行います0

var socket = io.connect();あなたはホストを指定する必要はありません

+0

ありがとう、これは私が問題を解決するために必要なものではありませんでした。しかし、確かに修正の主要な部分でした –

+0

私はすべてのSSL関連のものを処理することをお勧めしますnginxとノードjsは無料です。 私はあなたが両方のノードjsとnginxの両方でsslをやり終えるのを見るアプローチとして。 nginxにもそうしてもらえるかもしれません。 –

+0

さて、私はnodejsにhttpサーバーを作成しようとしました。しかし、ブラウザは安全でないと判断されるため、リソースの読み込みを拒否します。 –

関連する問題