温馨提示×

debian nginxssl怎么配置跳转

小樊
44
2026-09-17 21:00:09
栏目: 云计算

在 Debian 上用 Nginx 配置 HTTP → HTTPS 跳转(SSL 跳转)通常有几种常见方式。下面按最常用、最规范的方式给你说明。


一、前提条件

  1. 已安装 Nginx
sudo apt update
sudo apt install nginx
  1. 已申请 SSL 证书(自签或 Let’s Encrypt)
  • Let’s Encrypt(推荐):
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

二、方式一:HTTP 强制跳转 HTTPS(最常用 ✅)

1️⃣ 编辑 Nginx 站点配置

sudo nano /etc/nginx/sites-available/example.com

2️⃣ HTTP 配置(80 端口)

server {
    listen 80;
    server_name example.com www.example.com;

    # 强制跳转 HTTPS
    return 301 https://$host$request_uri;
}

3️⃣ HTTPS 配置(443 端口)

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;
}

三、方式二:在 HTTPS server 中统一处理(不推荐)

server {
    listen 80;
    server_name example.com;
    # 什么都不做,只跳
    return 301 https://example.com$request_uri;
}

四、方式三:使用 rewrite(老写法,不推荐)

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

六、常见坑 ⚠️

  1. 防火墙没开 443
sudo ufw allow 'Nginx Full'
  1. 证书路径错误
ls /etc/letsencrypt/live/example.com/
  1. 浏览器缓存
  • 用无痕模式测试
  • curl -I http://example.com

七、验证跳转

curl -I http://example.com

应看到:

HTTP/1.1 301 Moved Permanently
Location: https://example.com/

如果你是用 Docker / 宝塔 / 自签证书 / 反向代理,可以告诉我具体环境,我给你对应配置。

0