- 已关闭。**此问题为not about programming or software development。当前不接受答案。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题有关,您可以留下评论,说明在何处可以回答此问题。
十小时前关门了。
Improve this question
我目前正在DigitalOcean上部署一个全栈的web应用程序,在那里我有两个docker映像-一个用于前端静态服务文件,一个用于处理API调用的任何逻辑。我最近在我的网站上添加了CloudFlare,它启用了HTTPS,虽然这是一个进步,但现在我的后端在使用HTTPS时不再从域中响应。如果我通过我的droplet的ip(unsecure,HTTP)访问它,我可以看到我的api请求正在工作,但在主HTTPS站点上,整个后端没有响应。
我目前正在将我的前端Map到docker容器外的端口80(从端口3000内部)和后端的端口3001:3001。我听说我可能应该使用nginx,但我不确定它如何与我的2个docker映像一起工作,我尝试使用https.createServer(options, app)
来尝试让它侦听HTTPS请求,但没有效果。
下面是我当前的后端:
const express = require("express");
const webserver = express();
const cors = require("cors");
const mysql = require("mysql");
// Connection pool here
webserver.use(cors());
webserver.use(express.json());
const PORT = 3001;
//api routes here
webserver.listen(PORT, () => {
console.log(`[Express] Server running on ${PORT}`);
});
任何一步在正确的方向将不胜感激,我一直在研究如何解决这个~10小时没有运气。
编辑:我相信解决方案不是将Express服务器更改为允许HTTPS,而是让Nginx执行反向代理,并在它甚至到达Express服务器之前将其转换为HTTP,但我不确定这是如何完成的。
1条答案
按热度按时间nfzehxib1#
您必须使用
https.createServer()
手动创建服务器示例,并将https服务器的安全凭据传递给它,而不是使用app.listen()
或使用变量命名webserver.listen()
:此处为相关https文档,此处为Express文档。