下面是在 Debian 系统上配置 Nginx SSL(HTTPS) 的完整流程,适用于 Debian 10/11/12,包含自签名证书和Let’s Encrypt 免费证书两种方式。
sudo apt update
sudo apt upgrade -y
sudo apt install nginx -y
sudo systemctl status nginx
sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/nginx/ssl/nginx.key \
-out /etc/nginx/ssl/nginx.crt
按提示填写:
example.com 或 192.168.1.10)编辑站点配置:
sudo nano /etc/nginx/sites-available/default
示例配置:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# HTTP 自动跳转 HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
sudo nginx -t
sudo systemctl reload nginx
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
流程说明:
sudo certbot renew --dry-run
✅ Certbot 已自带 systemd timer,无需手动设置。
浏览器访问:
https://example.com
或使用:
curl -I https://example.com
检查防火墙:
sudo ufw allow 'Nginx Full'
确保:
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
为每个域名单独配置 server {},并使用对应证书。
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384';
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
如果你愿意,可以告诉我:
我可以帮你生成完整可用的 Nginx 配置文件。