在 Ubuntu 上让 Node.js 开启 HTTPS,通常有两种常见方式:
你需要:
server.key(私钥)server.crt(证书)本地测试可用自签名证书:
sudo apt update
sudo apt install -y openssl
openssl req -nodes -new -x509 \
-keyout server.key -out server.crt \
-days 365
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('./server.key'),
cert: fs.readFileSync('./server.crt')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('HTTPS OK');
}).listen(443, () => {
console.log('HTTPS running on port 443');
});
sudo node server.js
浏览器访问:
https://localhost
sudo apt install nginx
sudo nano /etc/nginx/sites-available/default
示例:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
}
}
const http = require('http');
http.createServer((req, res) => {
res.end('Hello');
}).listen(3000);
sudo nginx -t
sudo systemctl restart nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
sudo如果你告诉我:
我可以给你更精确的配置。