Cloudflare SSL:应用 SSL 后 Express 不工作

Cloudflare SSL: Express Not Working After SSL Appli

请考虑我的情况:

  1. 我在 HTTPExpress.js 的端口 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 为您的域设置了 "Page Rules",所以我将我的设置为 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 上保持灵活 - , I was thinking this will surely work since Cloudflare says "The Flexible SSL option allows a secure HTTPS connection between your visitor and Cloudflare, but forces Cloudflare to connect to your origin web server over unencrypted HTTP. An SSL certificate is not required on your origin web server and your visitors will still see the site as being HTTPS enabled." 这样做也失败了。

因此,我仍然无法在 domainname.com/api/signinhttps://123.456.789.10:8880/api/signinhttp://123.456.789.10:8880/api/signin 上联系到 /api/signin。当我尝试登录时,Morgan 在控制台中没有显示任何内容,而以前是这样。

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

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