2016-03-31 16 views
9

Próbuję uruchomić serwer node.js https.serwer https node.js nie ładuje się odpowiadając

Zacząłem tworząc certyfikat i klucz zgodnie z tym przewodnikiem:

http://gaboesquivel.com/blog/2014/nodejs-https-and-ssl-certificate-for-development/

i umieściłem je w moim katalogu /app_name/security/keys.

Aby uruchomić mój serwer https, mam następujący:

const https   = require('https'), 
     fs   = require('fs'); 

if(app.get('env') === 'development') { 

    console.log('dev env!!'); //prints correctly 
    console.log('port: ' + port); //prints correctly 
    const options = { 
     key: fs.readFileSync('./security/keys/key.pem'), 
     cert: fs.readFileSync('./security/keys/cert.pem') 
    }; 

    https.createServer(options, (req, res) => { 

     console.log('https good to go'); //this does not print out anything 

    }).listen(port); 

} 

Kiedy idę do https://localhost:3000, strona zgłasza błąd

This site can’t be reached 

localhost unexpectedly closed the connection. 
ERR_CONNECTION_CLOSED 

Ale nie ma błędu na konsoli po stronie serwera. Ponadto, jeśli pójdę do regularnego localhost:3000, otrzymuję:

The localhost page isn’t working 

localhost didn’t send any data. 
ERR_EMPTY_RESPONSE 

Czy ktoś może pomóc?

Z góry dzięki!

---- UPDATE ----

biegnę na porcie 443 obecnie. Początkowo Mam błąd:

Error: listen EACCES 0.0.0.0:443 więc wpadłem:

sudo NODE_ENV=development nodemon app

które nie rzucać żadnych błędów. Jednak, gdy poszedłem do https://localhost:443, otrzymuję:

This site can’t be reached 

localhost unexpectedly closed the connection. 
+0

Chyba może to być związane z port, https zwykle działa na porcie 443. możesz spróbować. –

+0

jeśli nie podano portu, to działa na 443. jest zdefiniowana stała portu. – tanaydin

+0

Gotcha - próbowałem uruchomić na 443, ale wciąż dostaję "ta strona nie może być osiągnięta". Zaktualizowałem moje pytanie, podając więcej szczegółów błędu. –

Odpowiedz

-1

tak wiele problemów z kodem.

Testowałem to bardzo szybko.

słowo kluczowe app i port nie jest zdefiniowane, odpowiednio linie 4 i 7.

Spowoduje to zgłoszenie błędu składniowego, co uniemożliwi dalsze kontynuowanie kodu, przez co serwer w ogóle się nie uruchomi.

Jak wspomniałem w swoim komentarzu, użyj devtool do debugowania i użyj poniższej linii na CLI devtool server.js -w, gdzie -w obserwuje zmiany pliku i ponownie ładuje serwer w trakcie pracy. również zakładając, że nazwałeś swój plik wejściowy server.js

0

Użyłem express jako serwera WWW. zainstalować express:

npm install express --save 

Wziąłem swój kod, dodał wykorzystania w express, wygenerowany certyfikat przy użyciu openssl i wykonywane go - wszystko wyglądało dobrze, serwer był w górę, nasłuchuje na porcie 3000 na https.

Mój kod (oparty na kodzie ...):

var app = require('express')(); 
const https   = require('https'), 
     fs   = require('fs'), 
     port   = 3000; 

if(app.get('env') === 'development') { 

    console.log('dev env!!'); //prints correctly 
    console.log('port: ' + port); //prints correctly 
    const options = { 
     key: fs.readFileSync('/tmp/private.key'), 
     cert: fs.readFileSync('/tmp/publickey.crt') 
    }; 

    https.createServer(options, (req, res) => { 

     console.log('https good to go'); //this does message appears!!! ^_^ 

    }).listen(port); 

} 

Proszę zwrócić uwagę na sposób, w jaki zdefiniowany app: var app = require('express')();

można podzielić tę definicję do dwóch linii, jeśli jest to bardziej czytelne:

var express = require('express'); 
var app = express();