Ich habe ein Problem bei der Konfiguration von nginx und node, um socket.io über SSL zu unterstützen.nginx, node.js + socket.io mit SSL
Meine nginx config:
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 Upstream ist node.js für den Betrieb auf Port 6020. Wenn in Chrom Testen auf Abruf stoppt mit (nicht) Status. Wenn wscat mit:
wscat --connect WSS: //live-test.dev
I erhalten: error: Error: self signed certificate
Ich frage mich, was hier falsch sein kann? Hier ist meine node.js App:
Ich habe das Gefühl, ich vermisse etwas in meiner node.js App. Ich dachte, dass seit nginx SSL SSL node.js nicht mehr muss, aber vielleicht irre ich mich.
Und ja, ich benutze selbstsigniertes Zertifikat für SSL. Funktioniert node.js/socket.io mit selbstsigniertem Zertifikat?
@UPDATE
etwas zu lesen Nach änderte ich meine node.js App:
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');
});
@ UPDATE2
Nach dem Kommentar von abcdn I wscat mit -n versucht haben, jetzt bekommen Fehler: error: Error: unexpected server response (502)
während nginx error.log enthält: 2017/03/07 13:44:10 [error] 10556#10556: *140 upstream prematurely closed connection while reading response header from upstream
@UPDATE 3
Nach einer weiteren Lesung, wandte ich mich an http meine app.js zurück.
Haben Sie versucht, 'wscat -n', d. H.' Wscat --no-check' - überspringen Zertifikat testen? – abcdn
@abcdn Ich habe es gerade vor einer Minute versucht, aktualisiert meine Frage – user1970395
@abcdn Ich glaube, das bedeutet Nginx korrekt behandeln die Anfrage und es ist Knoten, der scheitert? – user1970395