ノードアプリケーションをHTTPとHTTPSで実行したいとします。実装したStackOverflowにいくつかのコードが見つかりましたが、https://
URLにアクセスする際にタイムアウトになります。 HTTP経由の通常の方法は正常に動作しています。 https://
サイトにアクセスするときに、サーバーコンソールにエラーは表示されません。訪問を試みるとコンソールで何も表示されませんでしたhttps://
NodeJS https timeout
サーバーはAmazonプラットフォームで動作しています。
編集:私は、私は「生産」に
sudo NODE_ENV=production forever start app.js
をNODE_ENV
variabeleを設定し、サーバーを起動すると、誰もが私がここで間違ってやっているかを見ることができますか?
var env = process.env.NODE_ENV || 'development';
require('./config/config').set(env);//set configuration
console.log(env);
var config = require('./config/config').config;
var express = require('express');
var debug = require('debug')('juweliergids:server');
var http = require('http');
require('./config/mongoose');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(config.port);
var app = express();
var compact = require('./config/compact')(app, config);
require('./config/express')(app, config, compact);
require('./config/routes')(app, config, compact);
app.set('port', config.port);
/**
* Create HTTP and HTTPS server.
*/
var httpServer = http.createServer(app);
httpServer.listen(port);
httpServer.on('error', onError);
httpServer.on('listening', onHttpListening);
if(env === 'production'){
var https = require('https');
var fs = require('fs');
var privateKey = fs.readFileSync('/etc/letsencrypt/live/domain.com/privkey.pem');
var certifcate = fs.readFileSync('/etc/letsencrypt/live/domain.com/fullchain.pem');
var credentials = {
key: privateKey,
cert: certifcate,
rejectUnauthorized:false
}
var httpsServer = https.createServer(credentials, app);
httpsServer.listen(443);
httpsServer.on('error', onError);
httpsServer.on('listening', onHttpsListening);
}
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onHttpListening() {
var addr = httpServer.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
console.log('HTTP server is listening on ' + bind);
debug('HTTP server is listening on ' + bind);
}
function onHttpsListening() {
var addr = httpsServer.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
console.log('HTTPS server is listening on ' + bind);
debug('HTTPS server is listening on ' + bind);
}
あなたはそれがファイアウォールの問題ではありません主張しているポートへの着信接続を許可する場合
だから、ファイアウォールを確認しますか?ポート443への着信接続は許可されていますか? – robertklep
それは解決策でした!あなたは答えとしてこれを置くことができますか? – NVO