在 Debian 上搭建 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 后,设置 SSL(HTTPS) 通常推荐使用 Let’s Encrypt 免费证书。下面给你一套完整、常用、可落地的做法。
dig example.com
sudo apt update
sudo apt upgrade -y
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
过程中会:
✅ 这是最简单、最安全的方式
sudo certbot certonly --nginx \
-d example.com \
-d www.example.com
证书路径:
/etc/letsencrypt/live/example.com/
├── fullchain.pem
├── privkey.pem
编辑站点配置:
sudo nano /etc/nginx/sites-available/example.com
示例配置:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/example.com;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
sudo nginx -t
sudo systemctl reload nginx
Let’s Encrypt 证书 90 天有效,但 Certbot 已自动配置定时任务。
sudo certbot renew --dry-run
systemctl list-timers | grep certbot
✅ 正常情况下无需人工干预
sudo ss -lntp | grep 443
sudo ufw allow 443/tcp
sudo nginx -t
journalctl -xe
✅ 开启 HSTS
add_header Strict-Transport-Security "max-age=31536000" always;
✅ HTTP/2
listen 443 ssl http2;
✅ 使用 A 级 SSL 配置
sudo apt install ssl-cert
apt install certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com
✅ 自动申请
✅ 自动配置
✅ 自动续期
如果你愿意,我可以根据你的 Debian 版本 + Nginx 配置给你一份完全定制的 SSL 配置模板。