AWS EC2インスタンス上でノードExpressアプリケーションを実行しています。私は、サーバーを実行し、HTTPを使用して明示アプリに接続することができる午前: //ec2-xx-xxx-xxx-242.us-west-2.compute.amazonaws.comAWS EC2のノードエクスプレスアプリケーションでhttpsを有効にする
をしかし、私はを使用する場合https
http
の代わりに、私のインスタンスにポート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インスタンスのルールがあります。
私は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
ここで、SSL証明書を設定していますか。私はSSL設定を全く見ません。 SSLを設定するのは、ポートを443に変更するだけです。 –
AWS上でトラフィック(https)を上記のEC2インスタンスに誘導するElastic Load Balancerを作成しました。 ELBにはSSLが設定されています。 – kurrodu
あなたの質問のほとんどは理にかなっていません。ロードバランサ上でSSLトラフィックを処理し、ロードバランサからNodeJSサーバのポート80上のすべてのトラフィックをフォワードする必要があります。 NodeJSをポート443用に設定しないでください。EC2サーバーのURLを直接ロードすることでHTTPSをテストしようとしないでください。明らかに動作しないためです。 –