In precedenza avevo uno script Socket.io in esecuzione su http, ma l'aggiornamento a https l'ha interrotto. Ho installato il certificato sul server ma senza fortuna. Il codice per la configurazione del server è:Errore gateway errato utilizzando Socket.io Node.js su SSL
var https = require('https'),
fs = require('fs');
var options = {
key: fs.readFileSync('/etc/nginx/ssl/default/54082/server.key'),
cert: fs.readFileSync('/etc/nginx/ssl/default/54082/server.crt')
};
var app = https.createServer(options);
var io = require('socket.io').listen(app);
Tuttavia nel browser web pagina non riesce a collegarsi ad esso e la console mostra una risposta the server responded with a status of 502 (Bad Gateway)
.
Qualche idea su se la sceneggiatura è sbagliata? O forse qualcosa nel setup di Nginx?
Molte grazie
Edit: Il codice front-end che sto utilizzando per la connessione:
<script type="text/javascript" src="https://socket.example.com/socket.io/socket.io.js"></script>
<script>
var io = io('https://socket.example.com', { secure: true });
</script>
Modifica :: Nginx config:
# FORGE CONFIG (DOT NOT REMOVE!)
include forge-conf/socket.example.co.uk/before/*;
server {
listen 443 ssl;
server_name socket.example.co.uk;
root /home/forge/socket.example.co.uk;
# FORGE CONFIG (DOT NOT REMOVE!)
include forge-conf/socket.example.co.uk/server/*;
location/{
proxy_pass https://socket.example.co.uk:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# FORGE CONFIG (DOT NOT REMOVE!)
include forge-conf/socket.example.co.uk/after/*;
Stai passando {garantire: true} durante la connessione al server? http://stackoverflow.com/questions/6599470/node-js-socket-io-with-ssl –
non è necessario eseguire il proxy su node.js tramite nginx. la porta è aperta, quindi connettendosi con 'io.connect (': ', {secure: true}); 'dal client è tutto ciò che devi fare per iniziare. non è possibile eseguire il proxy tramite nginx (e non è necessario dal momento che il nodo si collega a tutte le interfacce e il dominio viene instradato al proprio ip: porta comunque a causa della configurazione DNS). ho letteralmente aggiornato il mio socket io a https ieri senza problemi. –
r3wt
@ r3wt Quindi stai dicendo che il dominio dovrebbe essere qualcosa di diverso? Cosa dovrebbe essere? Sto usando il codice 'var io = io ('https://socket.example.com/socketio/socketio.js', {secure: true});' – samiles