SSL経由でsocket.ioをサポートするためにnginxとnodeを設定する際に問題があります。nginx、node.js + socket.io with SSL
私のnginxの設定ファイル:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen 443 ssl;
listen [::]:80;
listen [::]:443 ssl;
access_log /var/log/nginx/livetest.log;
server_name live-test.dev www.live-test.dev;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 5m;
if ($ssl_protocol = "") {
rewrite^https://$host$request_uri? permanent;
}
location/{
proxy_pass https://live_test;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
live_testは、それが状況を(失敗)でポーリングに停止しないクロームでテストする場合は、ポート6020で実行しているのNode.jsのための上流にあります。 WSS --connect
wscat:wscat使用する場合//live-test.dev
を私が受け取る: error: Error: self signed certificate
私はここで間違っているかもしれないもの思ったんだけど?ここに私のnode.jsアプリがあります:
var express = require('express');
var cookie = require('cookie');
var app = express();
var http = require('http').Server(app);
var socketIo = require('socket.io');
var redis = require('redis');
var redisClient = client = redis.createClient();
io.on('connection', function(socket){
var cookies = cookie.parse(socket.handshake.headers.cookie);
console.log(cookies);
});
http.listen(6020, function(){
console.log('listening on 6020');
});
私のnode.jsアプリには何か不足している気がします。私は、SSLノードnode.jsをnginxが処理して以来、もう必要ないと思ったが、おそらく私は間違いだと思った。
はい、SSL用に自己署名証明書を使用しています。 node.js/socket.ioは自己署名証明書で動作しますか?今取得、私は-nフラグとwscatを試してみましたabcdnによってコメントに続きアップデート2
@
var express = require('express');
var cookie = require('cookie');
var fs = require('fs');
var app = express();
var https = require('https').Server(app, {
key: fs.readFileSync('/etc/nginx/ssl/nginx.key'),
cert: fs.readFileSync('/etc/nginx/ssl/nginx.crt'),
});
var socketIo = require('socket.io');
var redis = require('redis');
var redisClient = client = redis.createClient();
var io = new socketIo(https);
io.on('connection', function(socket){
var cookies = cookie.parse(socket.handshake.headers.cookie);
console.log(cookies);
});
https.listen(6020, function(){
console.log('listening on 6020');
});
:
@UPDATE
は、いくつかの読書の後、私は私のNode.jsアプリケーションを変更しましたエラー: error: Error: unexpected server response (502)
nginxエラー.logには、次の情報が含まれます。 2017/03/07 13:44:10 [error] 10556#10556: *140 upstream prematurely closed connection while reading response header from upstream
@UPDATE 3
さらに読みになった後、私は戻って、HTTPに私app.jsを回しました。
'wscat -n'、つまり' wscat --no-check' - 証明書テストをスキップしようとしましたか? – abcdn
@abcdn私はちょうど1分前に試してみました。私の質問を更新しました。 – user1970395
@abcdnこれはnginxがリクエストを正しく処理し、失敗したノードだと思いますか? – user1970395