【问题标题】:HTTP is working but HTTPS is not working in Nodejs with LAMP stackHTTP 正在运行,但 HTTPS 在带有 LAMP 堆栈的 Nodejs 中不起作用
【发布时间】:2020-06-18 10:29:41
【问题描述】:

我在 ubuntu 18 中有一个使用 PHP、apache2、MySQL 的工作网站 (https://example.com/)

我确实想使用 nodejs 创建 API (https://example.com/api) 并表达 js。所以我们已经安装了 node js 并开始在 /api (在同一台 ubuntu 机器上)制作一个 Nodejs 应用程序。我们可以在没有 https (http://example.com/api) 的情况下轻松访问我们的 API,但是当我们尝试使用 https (https://example.com/api) 时,它根本不起作用。并且主网站仍然可以正常使用 https。

我不明白为什么 https 不适用于 /api 文件夹,但它适用于整个网站。 我尝试了其他一些解决方案,但没有任何东西对我有用。因为很多解决方案都推荐使用 Nginx。但我对 Nginx 一点也不熟悉,我们有很多 apache2 的自定义配置,不知道如何存档。

这是写在/api文件夹内index.js上的简单代码

app.get('/',function (req, res, next) {

    res.json({
        'success': {
            'message': 'done'
        }
    });
});

任何帮助将不胜感激。谢谢

编辑:

我尝试了这个问题的答案 (Enabling HTTPS on express.js),它正在使用 https,现在我担心,这是实现 SSL 的正确方法吗?或者我们应该尝试使用 apache 配置文件来完成它

【问题讨论】:

  • 你的 NodeJS 服务器是否启用了 HTTPS?
  • 这能回答你的问题吗? Enabling HTTPS on express.js
  • 是否需要在node js中添加自定义代码来处理SSL,不会减慢速度吗?因为它应该由服务器处理(如 apache 或 Nginx )
  • 不能只使用我们已经安装好的ssl吗?
  • 您运行 PHP 代码的服务器与您运行 NodeJS 的服务器不同。

标签: php node.js apache ubuntu https


【解决方案1】:

HTTPS 应该在你的 HTTP Server Apache2 上启用,而不是在 NodeJS 上。然后,您应该使用 proxypass 将 /api 代理到您的应用程序中(将站在某个端口上 - 阻止该端口直接从服务器外部通信)。 然后所有客户端将使用 HTTPS 连接到 Apache2 本身,但 apache2 将使用与节点的正常连接 - 因此您有 ssl 供外部使用和用户使用,但节点本身没有过多的开销。

示例:https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

【讨论】:

    猜你喜欢
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2015-05-19
    相关资源
    最近更新 更多