【问题标题】:Cloudflare SSL: Express Not Working After SSL AppliCloudflare SSL:在 SSL 应用后 Express 不工作
【发布时间】:2020-05-02 07:31:14
【问题描述】:

请考虑我的情况:

  1. 我在 Express.js 的 HTTP 端口 8880 上创建了一个后端 API
  2. 我在 Next.js 的 80 端口上创建了一个前端网站,也是在 HTTP 中。
  3. 我在 cloudflare 注册,他们管理我的 DNS,我获得了他们的 SSL,因此我的前端 HTTP 站点变为 HTTPS。
  4. 在前端成功应用 SSL 后,后端 api 停止接收前端登录的 POST 请求。

因此,我无法再登录到我的站点,因为当 POST 请求尝试发送登录的 JSON 有效负载时,每次尝试都会失败。如何修复此 SSL 损坏?这作为 HTTP 到 HTTP 工作得非常好。但是现在,作为 HTTPS 到 HTTP,失败了。

这是我试图解决的问题:

  1. HTTPS 到 HTTPS - 失败。我尝试将后端更改为 HTTPS,但按照此说明使用了自签名证书。

我在 app.js 中的代码(后端):

https.createServer({
    key: fs.readFileSync('server.key'),
    cert: fs.readFileSync('server.cert')
  }, app)
  .listen(port, function () {
    console.log(`Connected on port ${port}`)
  })
  1. 设置我的 Cloudflare 页面规则 - 显然 cloudflare 为您的域设置了“页面规则”,所以我将我的设置为 domainname.com/api SSL:灵活。还是失败了。 Postman 中的测试显示我使用https://123.456.789.10:8880/api/signin 成功登录,但使用https://domainname.com/api 登录失败。我在 Express 上启用了 morgan,但在 /api/signin 端点上没有看到 ping。

  2. 将后端从 HTTPS 切换到 HTTP,将页面规则保留在 SSL 上灵活 -As per this answered question here,我认为这肯定会工作since Cloudflare says “灵活的 SSL 选项允许您之间的安全 HTTPS 连接访问者和 Cloudflare,但强制 Cloudflare 通过未加密的 HTTP 连接到您的源 Web 服务器。您的源 Web 服务器上不需要 SSL 证书,您的访问者仍会看到该站点启用了 HTTPS。" 也这样做失败了。

因此,我仍然无法通过domainname.com/api/signinhttps://123.456.789.10:8880/api/signinhttp://123.456.789.10:8880/api/signin 访问/api/signin。当我尝试登录时,Morgan 在控制台中没有显示任何内容,而之前它确实如此。

那里的某些人一定已经解决了在一个 IP 但两个不同的端口上设置前端和后端的问题,并且之前已经让它与 cloudflare SSL 一起工作。请帮忙!

【问题讨论】:

    标签: node.js express ssl next.js cloudflare


    【解决方案1】:

    我能够通过实现 NGINX 并将配置设置为采用 //api 并让它们路由到运行其端口号的相应应用程序来解决这个问题。此外,我必须在我的 Express 后端设置 cors 并使用 dotenv 来允许 .env 文件保留包含前端 Next.js 应用程序 IP 地址的 FRONTEND_APP 环境变量。

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多