Jac*_*ler 4 https web-services node.js express
我试图重新路由http (80)到https (443)在我的快递应用程序.我正在使用一些中间件来做到这一点.如果我去找我https://my-example-domain.com,一切都很好.但如果我去,http://my-example-domain.com它不会重定向,也没有任何显示.
我也在我的ubuntu服务器上安装了一些iptables
sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 8443 -j ACCEPT
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
function requireHTTPS(req, res, next) {
if (!req.secure) {
return res.redirect('https://' + req.headers.host + req.url);
}
next();
}
// all environments
app.set('port', process.env.PORT || 8443);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.logger('dev'));
app.use(requireHTTPS); // redirect to https
app.use(express.json());
app.use(express.urlencoded());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req, res){
res.render('index');
})
https.createServer(options, app).listen(8443);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我只需要添加另一条iptables规则吗?或者我是否需要在我的应用程序中配置某些内容?
所以基于下面的一个答案,我不认为它是一个中间件问题,而是一个端口问题.例如:如果我去http://my-example-domain.com,则无效.但是如果我添加端口8443,http: //my-example-domain.com:8443 ,它会重定向.
var redirectApp = express () ,
redirectServer = http.createServer(redirectApp);
redirectApp.use(function requireHTTPS(req, res, next) {
if (!req.secure) {
return res.redirect('https://' + req.headers.host + req.url);
}
next();
})
redirectServer.listen(8080);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12207 次 |
| 最近记录: |