【问题标题】:how to access automatically access https protocols on express with nginx [duplicate]如何使用nginx在express上自动访问https协议[重复]
【发布时间】:2017-10-31 05:58:24
【问题描述】:

我正在运行带有 express 模块的服务器 nodeJs。网站是由 React.js 制作的,它是服务器端的。

我有域:www.example.com,Route53 和负载均衡器应用了 AWS 证书管理器。

问题是我不知道如何自动访问 https:// 协议,当我输入 url http://www.example.com

现在,我可以访问每个网址,例如 http://www.example.comhttps://www.example.com

我找到了解决方案:

app.use (function (enter code herereq, res, next) {
    if (req.secure) {
        next();
    } else {
        res.redirect('https://' + req.headers.host + req.url);
    }
});

但它不起作用......

有什么好方法???


更新

  1. 如果使用 nodejs 和 express,如何设置端口? express 块端口 80,所以我使用 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000。连接端口是常用的方法吗?

  2. 我有使用 SSL (ACM) 的负载平衡器,使用端口的端口是 80、443。 如何直接访问'http'或'https应该访问https。

【问题讨论】:

    标签: javascript node.js reactjs amazon-web-services https


    【解决方案1】:

    在部署 NodeJS 应用程序时,建议在 Node 服务器前使用 Nginx 或 Apache 等 Web 服务器作为代理,用于 gzip 编码、静态文件服务、HTTP 缓存、SSL 处理、负载平衡等。

    • 一种选择是在代理级别进行重定向
    • 在 AWS 中,另一种选择是使用 Cloudfront 和 http 到 https 重定向来实现源行为(也在边缘位置级别缓存静态内容)

    【讨论】:

    • 感谢回复。 :),而且,我需要一点补充解释 :) 两种解决方案,哪一种是更常用的方法?
    • 我总是使用 CloudFront,除非它在 ​​Node 应用程序中的 websocket 功能,因为静态内容的边缘缓存提高了应用程序性能。还可以使用 AWS 证书管理器颁发的 SSL 证书在 CloudFront 级别终止 SSL。
    • 哇,您在使用 CloudFront 吗?使用 Ngine x 怎么样?我找到了你告诉我的关于代理级别的解决方案。因此,使用 Nginx 的解决方案之一被很多人应用。用 nginx 怎么样??
    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 2013-02-15
    • 2014-02-26
    • 1970-01-01
    • 2018-04-02
    • 2013-09-23
    • 1970-01-01
    • 2019-07-16
    相关资源
    最近更新 更多