2016-03-31 14 views
9

https node.jsサーバを起動しようとしています。node.js httpsサーバが応答していない

私は、このガイド次の証明書とキーを作成することで開始しました:

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

と私は私の/app_name/security/keysディレクトリにそれらを置きました。

私のHTTPSサーバを起動するには、私は次のようしている:私はhttps://localhost:3000に行くとき

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); 

} 

を、ページがエラー

This site can’t be reached 

localhost unexpectedly closed the connection. 
ERR_CONNECTION_CLOSED 

をスローしかし、サーバ側のコンソールにはエラーはありません。私は定期的にlocalhost:3000に行けばさらに、私が取得:

The localhost page isn’t working 

localhost didn’t send any data. 
ERR_EMPTY_RESPONSE 

誰かが助けることはできますか?

ありがとうございます!

----更新日----

私は現在ポート443で動作しています。当初、私はエラーを得た:

Error: listen EACCES 0.0.0.0:443ので、私は走った:すべてのエラーをスローしませんでした

sudo NODE_ENV=development nodemon app

を。しかし、https://localhost:443に行ったとき、私は得る:

This site can’t be reached 

localhost unexpectedly closed the connection. 
+0

私はそれはと関連している可能性が推測ポート、httpsは通常443ポートで動作します。あなたが試すことができます。 –

+0

ポートが指定されていない場合は443で動作します。ポート定数が定義されています。 – tanaydin

+0

Gotcha - 私は443で走ろうとしましたが、私はまだこのサイトには到達できません。エラーの詳細を追加して質問を更新しました。 –

答えて

-1

あなたのコードには多くの問題があります。

私はこれを本当に迅速にテストしました。

キーワードappportは、それぞれ4行目と7行目が定義されていません。

これにより、構文エラーが発生し、コードがそれ以上続行されずにサーバーがまったく起動しなくなります。

私のコメントで述べたように、デバッグにはCLIの次の行を使用してください。-wは、ファイルの変更を監視し、開発中にサーバーをオンザフライでリロードします。 あなたのエントリファイルに名前がついていると仮定してserver.js

0

私はexpressをウェブサーバとして使用しました。 expressをインストールする :

npm install express --save 

私は、あなたのコードを取っexpressでの使用を追加、opensslを使用して証明書を生成し、それを実行する - すべてのHTTPS上のポート3000を聞いて、サーバが起動し、良い見えました。

マイコード(コードに基づいています...):

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); 

} 

私はappを定義した方法に注意してください:var app = require('express')();

それはより読みだ場合は、2行にこの定義を分割することができます:

var express = require('express'); 
var app = express(); 
関連する問題