【发布时间】:2022-08-17 04:28:28
【问题描述】:
我是 Web 开发的新手,我开发了我的第一个基本 CRUD 应用程序。它在我当地按预期工作。作为投资组合项目,我想创建一个实际的网站。我购买了域名和 SSL 证书等,部署了我的后端和前端等。但是过去几天我一直在努力解决一个问题。请参阅下面的详细信息
背景信息
- 服务器:我在 Heroku (example.com) 上有一个 nodejs 应用程序。我为我的域(即 example.com)购买了 ssl 证书。我在 Heroku 中插入了证书和中间证书,并与我的后端链接。
- 客户端:我在 Vercel (subdomain.example.com) 上部署了我的 React 和 nextjs 前端。 Vercel 正在为 subdomain.example.com 创建自己的证书
我的问题是我在我的网站上收到以下错误。在我等待几分钟并刷新后,错误消失了。如果我一段时间不使用它,错误会再次出现。
[Network] FetchError: request to https://example.com/graphql failed, reason: write EPROTO 139801265354624:error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:../deps/openssl/openssl/ssl/record/rec_layer_s3.c:1544:SSL alert number 80
请参阅下面我的 nodejs 代码
const conn = await createConnection({
type: \"postgres\",
url: process.env.DATABASE_URL,
host: process.env.PG_HOST,
username: process.env.PG_USER,
password: process.env.PG_PASSWORD,
port: parseInt(process.env.PORT),
database: process.env.PG_DATABASE,
logging: true,
migrations: [path.join(__dirname, \"./migrations/*\")],
entities: [Bank, User, Report],
ssl: __prod__ ? {rejectUnauthorized: false} : false
})
const redisStore = connectRedis(session);
const redis = new Redis(process.env.REDIS_URL);
app.set(\"trust proxy\", 1)
app.use(cors({
origin: __prod__ ? process.env.CORS_ORIGIN : \"http://localhost:3000\",
credentials: true
}))
app.use(
session({
name: COOKIE_NAME,
store: new redisStore({
client: redis,
disableTouch: true
}),
cookie: {
maxAge: 1000 * 60 * 60 * 24 * 365 * 10,
httpOnly: true,
sameSite: \"none\",
secure: __prod__,
domain: __prod__ ? process.env.DOMAIN : undefined
} as CookieOptions ,
saveUninitialized: false,
secret: process.env.SESSION_SECRET,
resave: false
})
)
const apolloServer = new ApolloServer({
schema: await buildSchema({
resolvers: [BankResolver, UserResolver, ReportResolver],
validate: false
}),
context: ({req, res}): MyContext => ({req, res, redis})
})
await apolloServer.start()
apolloServer.applyMiddleware({app, cors: false});
app.listen(parseInt(process.env.PORT), () => console.log(\"Server listening on port 4000\"));
}
标签: node.js reactjs ssl heroku vercel