在 Debian 上用 Nginx 配置 HTTP → HTTPS 跳转(SSL 跳转)通常有几种常见方式。下面按最常用、最规范的方式给你说明。
sudo apt update
sudo apt install nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
server_name example.com www.example.com;
# 强制跳转 HTTPS
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/html;
index index.html;
}
server {
listen 80;
server_name example.com;
# 什么都不做,只跳
return 301 https://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
rewrite ^ https://$host$request_uri? permanent;
}
✅ 建议用 return 301,性能更好
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo ufw allow 'Nginx Full'
ls /etc/letsencrypt/live/example.com/
curl -I http://example.comcurl -I http://example.com
应看到:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/
如果你是用 Docker / 宝塔 / 自签证书 / 反向代理,可以告诉我具体环境,我给你对应配置。