有没有办法让node.js服务器自动更新由let's encrypt每3个月生成的新证书,而无需重新启动服务?
我的服务器有一个自动管理证书的主机面板,所以我不能手动使用certbot。
目前,我有一个每月运行一次的cron,它会重新启动服务器以接受新的更改,但有时证书会在几天前更改,我的站点和api会停止工作,直到服务器重新启动。在我看来,这并不是最理想的解决方案。
const fs = require("fs");
const https = require("https");
const express = require("express");
const helmet = require("helmet");
var cors = require("cors");
const API = require("./index.js");
const hostname = "ENV.HOSTAME";
const httpsPort = ENV.PORT;
const httpsOptions = {
cert: fs.readFileSync("CERT-PATH"),
ca: fs.readFileSync("CA-PATH"),
key: fs.readFileSync("CA-KEY"),
};
const app = express();
app.use(helmet());
app.use(cors());
const httpsServer = https.createServer(httpsOptions, app);
// Parse URL-encoded bodies (as sent by HTML forms)
//app.use(express.urlencoded());
// Parse JSON bodies (as sent by API clients)
app.use(express.json());
app.get("/", function (req, res) {
res.redirect("HOSTNAME");
});
app.post("API-ROUTE", async function (req, res) {
const response = await API(req);
if (response != "Error") {
res.status(200).send(response);
} else {
res.status(500).json({ message: "Server Error" });
}
});
httpsServer.listen(httpsPort, hostname);
1条答案
按热度按时间bgibtngc1#
nodejs使用http服务和nginx作为反向代理。更新证书后,无需重新启动整个服务。执行
nginx -s reload
对我有用。