让加密证书只接受根路径

lets encrypt certificate only accepted for root path

我已经使用 Let's Encrypt Certbot 安装了证书。该站点可访问且连接安全。

假设该站点是 www.xxxyyy.xyz,但那里的任何路由 www.xxxyyy.xyz/route 都会跳转到非安全连接,然后站点关闭。知道可能是什么问题吗?

我在快速服务器上链接证书的方式如下:

const fs = require('fs');
const https = require('https');
const http = require('http');
const express = require('express');
const app = require('./app');

var options = {
    key: fs.readFileSync('/etc/letsencrypt/live/twotravelers.xyz/privkey.pem'),
    cert: fs.readFileSync('/etc/letsencrypt/live/twotravelers.xyz/fullchain.pem'),
};

var portSecure = '443';
var port = '80';

var httpsServer = https.createServer(/*options,*/ app).listen(portSecure, function(){
  console.log("https at port" + portSecure);
});

var httpServer = http.createServer(app).listen(port, function(){
console.log('http at port'+port)
})

有什么想法吗?

找到问题了。对于我使用的阅读路径:

fs.readFileSync('<relativePath>/file')

当 运行 服务器上的应用程序时,我设置了一个服务,这将工作目录更改为根目录 /。 我们可以添加绝对路径:

fs.readFileSync('<absolutePath>/file')

或者在服务文件中添加一个workingDirectory(我就是这样做的)。

那弄乱了证书和其他目录的路径。


可能最好的选择是 npm install dotenv 并使用环境变量控制行为。