在 Debian 的 LNMP(Linux + Nginx + MySQL + PHP) 环境下开启 SSL(HTTPS),通常最推荐用 Let’s Encrypt 免费证书 + Nginx 来实现。下面给你一套通用、可落地的做法。
example.com)sudo apt update
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
按提示:
✅ 完成后 Nginx 配置会自动加好 SSL
sudo certbot renew --dry-run
Let’s Encrypt 证书 90 天 有效,certbot 会自动续期。
如果你不用 certbot 自动配置:
sudo certbot certonly --webroot -w /var/www/example -d 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;
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/example;
index index.php index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
sudo nginx -t
sudo systemctl reload nginx
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/nginx/ssl/self.key \
-out /etc/nginx/ssl/self.crt
⚠️ 浏览器会提示不安全,不适合生产环境。
sudo ufw allow 443/tcp
systemctl status certbot.timer
确认 return 301 https://... 已配置
✅ 最省事:certbot --nginx
✅ 生产环境:Let’s Encrypt + 自动续期
❌ 不推荐:自签证书用于正式网站
如果你愿意,可以告诉我:
我可以给你更精确的配置。