配置HTTPS两种方法

177 阅读1分钟

。我们来一步步配置HTTPS。下面是新手也能理解的流程。


1️⃣ 前提条件

  • 域名已经备案 ✅
  • 域名解析指向服务器公网 IP ✅
  • HTTP 可以访问 ✅

2️⃣ 申请 SSL 证书

有几种方式:

方法 A:使用免费的 Let’s Encrypt(推荐新手)

  1. 登录服务器
  2. 安装 Certbot(自动申请证书工具)

Linux 示例(CentOS 或 Ubuntu)

# 安装 snapd(如果系统没自带)
sudo yum install snapd -y  # CentOS
sudo snap install core; sudo snap refresh core

# 安装 certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# 申请证书
sudo certbot certonly --standalone -d api.com -d www.api.com
  • 系统会自动验证域名是否解析正确(HTTP 80 端口必须开放)。

  • 成功后证书文件一般在:

    /etc/letsencrypt/live/api.com/fullchain.pem
    /etc/letsencrypt/live/api.com/privkey.pem
    

方法 B:购买云厂商 SSL(阿里云/腾讯云)

  • 登录 SSL 控制台 → 选择域名 → 申请免费或付费证书 → 下载证书和私钥 → 上传到服务器。

3️⃣ 配置 Nginx 支持 HTTPS

假设你已经有 HTTP 配置:

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

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

修改为同时支持 HTTPS:

# HTTP 自动跳转到 HTTPS
server {
    listen 80;
    server_name api.com www.api.com;
    return 301 https://$host$request_uri;
}

# HTTPS 配置
server {
    listen 443 ssl;
    server_name api.com www.api.com;

    ssl_certificate /etc/letsencrypt/live/api.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}
  • 保存后 重启 Nginx
sudo nginx -t  # 检查配置是否正确
sudo systemctl restart nginx

4️⃣ 测试 HTTPS

  1. 打开浏览器访问:
https://api.com
  1. 如果显示安全锁,说明配置成功 ✅

💡 小贴士

  • Let’s Encrypt 证书有效期 90 天,需要自动续期:
sudo certbot renew --dry-run
  • 如果你的服务器有防火墙,记得放行 80/443 端口