【发布时间】:2020-05-02 07:31:14
【问题描述】:
请考虑我的情况:
- 我在 Express.js 的 HTTP 端口 8880 上创建了一个后端 API
- 我在 Next.js 的 80 端口上创建了一个前端网站,也是在 HTTP 中。
- 我在 cloudflare 注册,他们管理我的 DNS,我获得了他们的 SSL,因此我的前端 HTTP 站点变为 HTTPS。
- 在前端成功应用 SSL 后,后端 api 停止接收前端登录的 POST 请求。
因此,我无法再登录到我的站点,因为当 POST 请求尝试发送登录的 JSON 有效负载时,每次尝试都会失败。如何修复此 SSL 损坏?这作为 HTTP 到 HTTP 工作得非常好。但是现在,作为 HTTPS 到 HTTP,失败了。
这是我试图解决的问题:
- 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}`)
})
设置我的 Cloudflare 页面规则 - 显然 cloudflare 为您的域设置了“页面规则”,所以我将我的设置为
domainname.com/apiSSL:灵活。还是失败了。 Postman 中的测试显示我使用https://123.456.789.10:8880/api/signin成功登录,但使用https://domainname.com/api登录失败。我在 Express 上启用了 morgan,但在/api/signin端点上没有看到 ping。将后端从 HTTPS 切换到 HTTP,将页面规则保留在 SSL 上灵活 -As per this answered question here,我认为这肯定会工作since Cloudflare says “灵活的 SSL 选项允许您之间的安全 HTTPS 连接访问者和 Cloudflare,但强制 Cloudflare 通过未加密的 HTTP 连接到您的源 Web 服务器。您的源 Web 服务器上不需要 SSL 证书,您的访问者仍会看到该站点启用了 HTTPS。" 也这样做失败了。
因此,我仍然无法通过domainname.com/api/signin 或https://123.456.789.10:8880/api/signin 或http://123.456.789.10:8880/api/signin 访问/api/signin。当我尝试登录时,Morgan 在控制台中没有显示任何内容,而之前它确实如此。
那里的某些人一定已经解决了在一个 IP 但两个不同的端口上设置前端和后端的问题,并且之前已经让它与 cloudflare SSL 一起工作。请帮忙!
【问题讨论】:
标签: node.js express ssl next.js cloudflare