在 Debian 上给 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 增加 SSL(HTTPS),最常用、最推荐的做法是:
✅ 使用 Let’s Encrypt 免费证书(Certbot)
下面给你一套 完整实操流程,从准备到生效。
例如:
example.com
www.example.com
sudo apt update
sudo apt upgrade -y
sudo apt install certbot python3-certbot-nginx -y
server {
listen 80;
server_name example.com www.example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
✅ server_name 必须和你的域名一致
✅ 访问 http://example.com 要能正常打开
sudo certbot --nginx -d example.com -d www.example.com
执行过程中会:
✅ 推荐新手直接用这个
如果你不想自动改 Nginx:
sudo certbot certonly --nginx -d example.com -d www.example.com
然后再手动改 Nginx。
Certbot 通常自动生成类似配置:
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;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
浏览器访问:
https://example.com
或用命令测试:
curl -I https://example.com
sudo certbot renew --dry-run
Debian 默认已有 systemd 定时任务:
systemctl status certbot.timer
✅ 无需手动操作
Failed to obtain certificate
✅ 检查:
✅ 通常是 PHP-FPM 没启动:
sudo systemctl restart php-fpm
sudo systemctl restart nginx
apt update
apt install certbot python3-certbot-nginx
certbot --nginx -d yourdomain.com
✅ 几分钟即可 HTTPS
如果你愿意,可以告诉我:
我可以给你 更精准的配置方案 ✅