我正在运行带有express模块的服务器nodeJs。网站是由React.js制作的,它是服务器端渲染。
我有域名:www.example.com、Route53,并应用了负载均衡器 AWS 证书管理器。
问题是当我输入 url http://www.example.com
时,我不知道如何自动访问 https://协议(protocol)
现在,我可以访问每个网址,如 http://www.example.com
或https://www.example.com
我找到了解决方案:
app.use (function (enter code herereq, res, next) {
if (req.secure) {
next();
} else {
res.redirect('https://' + req.headers.host + req.url);
}
});
但它不起作用...
什么是好方法???
<小时/>更新
如果使用nodejs和express,如何设置端口? Express 阻止端口 80,所以我使用
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
。连接端口是常用方法吗?我有使用 SSL (ACM) 的负载均衡器,使用的端口是 80、443。 如何直接访问“http”或“https”应该访问https。
最佳答案
部署 NodeJS 应用程序时,建议在 Node 服务器前面使用 Nginx 或 Apache 等 Web 服务器作为代理,用于 gzip 编码、静态文件服务、HTTP 缓存、SSL 处理、负载平衡等。
- 一种选择是在代理级别进行重定向
- 在 AWS 中,另一个选择是使用 Cloudfront 和 http 到 https 重定向来实现源行为(还可以在边缘位置级别缓存静态内容)
关于javascript - 如何使用nginx在express上自动访问https协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44267666/