自动退出是指 NodeJS https webserver 在证书到期或无效时会自动退出,导致服务器不可用。解决该问题的方法是在证书到期之前即将其更新。以下是示例代码:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/private/key'),
cert: fs.readFileSync('/path/to/certificate')
};
const server = https.createServer(options, (req, res) => {
// handle request and response
});
server.on('error', (err) => {
console.error('Server error:', err);
});
server.on('listening', () => {
console.log('Server started');
});
server.listen(443);
// 自动重新加载证书
const certAutoReload = setInterval(() => {
try {
options.key = fs.readFileSync('/path/to/new/private/key');
options.cert = fs.readFileSync('/path/to/new/certificate');
server.setSecureContext(options);
console.log('证书已更新');
} catch (err) {
console.error('证书更新失败:', err.message);
}
}, 86400000); // 每隔一天检查证书
这里使用 setInterval
函数每隔一天检查证书是否需要更新,如果证书已更新,则重新加载证书,更新 https web server 的安全上下文。