【发布时间】:2018-04-19 09:56:37
【问题描述】:
我有一个带有 express 的节点服务器。 Godaddy 是我使用的域名注册商。 如果我尝试连接 www.example.com 不起作用,只能使用 https://www.example.com。 代码是这样的:
app.use(express_enforces_ssl());
app.enable('trust proxy');
app.use (function (req, res, next) {
if(req.secure){
next();
}else {
res.redirect('https://' + req.headers.host + req.url);
}
});
var options = {
ca: fs.readFileSync('./gd_bundle-g2-g1.crt'),
key: fs.readFileSync('./server_cert_key.key'),
cert: fs.readFileSync('./cfbe0f99da37dcae.crt')
};
https = require('https').createServer(options, app);
io = require('socket.io')(https);
但是,如果我 'ping www.example.com' 会到达服务器,但不会在浏览器中。
进程在端口 443(用于安全连接的专用端口)上运行。
我已从内部端口 443 进行端口转发,并在端口 80 上输出,这就是域名注册商的工作方式,仅使用端口 80。
我不知道该如何解决。你有什么想法吗?
【问题讨论】:
-
@S.D.是正确的,但如果您希望流量仅使用 https,那么您可以配置您的 Web 服务器以将 http 流量重定向到 https
-
是的,我希望我的用户只使用安全连接。可悲的是,@S.D 方法不起作用。
-
由于您只希望用户使用安全连接,因此您需要配置服务器以将所有流量重定向到 https 尝试按照以下教程之一进行操作 digitalocean.com/community/questions/… digitalocean.com/community/questions/… 取决于您的 Web 服务器配置将与众不同
-
谢谢。它正在使用 nginx