我是一个网络开发新手,我开发了我的第一个基本的CRUD应用程序。它在我的本地预期的工作。作为一个投资组合项目,我想创建一个实际的网站。我买了域名和SSL证书等,部署我的后端和前端等。然而,我挣扎的问题,为过去几天。请参阅下面的详细信息
背景信息
- 服务器:我在Heroku(www.example.com)上有一个nodejs应用程序example.com。我为我的域(iidoe.example.com)购买了一个ssl证书。我在Heroku中插入了证书和中间证书,并与我的后端链接。
- 客户端:我在Vercel(www.example.com)上部署了我的React & nextjs前端subdomain.example.com。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"));
}
1条答案
按热度按时间gpfsuwkq1#
我在不同的上下文中遇到了“alert number 80”(Nagios check_http,启用SNI会有所帮助)。无论如何,“alert number 80”表示“internal_error”(参见RFC 5246第7.2节)。
与对等体或协议正确性无关的内部错误(如内存分配失败)使其无法继续。此消息总是致命的。
升级Node.js或它用来实现SSL的任何东西可能会有所帮助。