2017-11-07 6 views
-1

AWS EC2インスタンス上でノードExpressアプリケーションを実行しています。私は、サーバーを実行し、HTTPを使用して明示アプリに接続することができる午前: //ec2-xx-xxx-xxx-242.us-west-2.compute.amazonaws.comAWS EC2のノードエクスプレスアプリケーションでhttpsを有効にする

をしかし、私はを使用する場合httpshttpの代わりに、私のインスタンスにポート443を開いていても動作しません。

エクスプレスアプリでhttpsをどうすれば有効にできるかお教えください。

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
//var httpsRedirect = require('express-https-redirect'); 

var index = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', index); 
app.use('/users', users); 

app.get('/hello', (req, res) => res.sendStatus(200)); 
app.get('/health-check', (req, res) => res.sendStatus(200)); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 

// *** HERE I am setting my App to listen on port 443 

//app.listen(8080); 
app.listen(8443); 

module.exports = app; 

ここに、ポート443がすべてのトラフィックに対して開いているEC2インスタンスのルールがあります。

enter image description here

私はAWS EC2のLinuxインスタンス上の8443にポート443から転送有効:

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443 

は、ポート443上の接続を許可するように、Linuxのファイアウォールをオープン:

sudo iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT 
sudo iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT 
+0

ここで、SSL証明書を設定していますか。私はSSL設定を全く見ません。 SSLを設定するのは、ポートを443に変更するだけです。 –

+0

AWS上でトラフィック(https)を上記のEC2インスタンスに誘導するElastic Load Balancerを作成しました。 ELBにはSSLが設定されています。 – kurrodu

+0

あなたの質問のほとんどは理にかなっていません。ロードバランサ上でSSLトラフィックを処理し、ロードバランサからNodeJSサーバのポート80上のすべてのトラフィックをフォワードする必要があります。 NodeJSをポート443用に設定しないでください。EC2サーバーのURLを直接ロードすることでHTTPSをテストしようとしないでください。明らかに動作しないためです。 –

答えて

0

これは非常に簡単ですが、通常どのように動作するかを理解するには時間が必要です。 https://www.sitepoint.com/configuring-nginx-ssl-node-js/

いくつかの単語で:

  • をインストールし、HTTPSを処理するリバースプロキシを設定し、証明書を生成しているよう

    1. があなたの特急アプリを滞在 これは、開始するには絶好の場所である必要があります。 Nginxは素晴らしい選択です。
  • 関連する問題