- Three solutions: Nginx+Certbot, Cloudflare SSL, acme.sh - Detailed step-by-step instructions - FRP configuration for HTTPS - Troubleshooting guide - Comparison of different approaches
8.9 KiB
8.9 KiB
HTTPS 配置指南 - 3D.YYDD.AI
概述
为域名 3D.YYDD.AI 配置免费的 HTTPS 证书(Let's Encrypt)
服务器信息:
- 公网IP:180.97.221.140
- 域名:3D.YYDD.AI
- 当前端口:2320 (HTTP)
- 目标:配置 443 端口 (HTTPS)
- 架构:云服务器 → FRP穿透 → NAS服务器
方案选择
方案一:Nginx + Certbot(推荐)
适用于云服务器上直接配置反向代理
方案二:Cloudflare SSL(最简单)
适用于使用 Cloudflare 作为 DNS 解析
方案一:Nginx + Let's Encrypt(免费证书)
1. 在云服务器上安装 Nginx 和 Certbot
# SSH 登录到云服务器 180.97.221.140
ssh root@180.97.221.140
# CentOS/RHEL
sudo yum install -y nginx certbot python3-certbot-nginx
# Ubuntu/Debian
sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx
2. 配置 Nginx 反向代理
创建配置文件:/etc/nginx/conf.d/3d-yydd-ai.conf
# HTTP 配置(用于 Let's Encrypt 验证和重定向)
server {
listen 80;
server_name 3d.yydd.ai www.3d.yydd.ai;
# Let's Encrypt 验证目录
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
# 其他请求重定向到 HTTPS
location / {
return 301 https://$server_name$request_uri;
}
}
# HTTPS 配置
server {
listen 443 ssl http2;
server_name 3d.yydd.ai www.3d.yydd.ai;
# SSL 证书路径(稍后由 certbot 自动填充)
ssl_certificate /etc/letsencrypt/live/3d.yydd.ai/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/3d.yydd.ai/privkey.pem;
# SSL 优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 安全头部
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# 反向代理到 NAS 服务器(通过 FRP 穿透)
location / {
# 代理到 FRP 映射的本地端口
proxy_pass http://127.0.0.1:2320;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
# 大文件上传支持
client_max_body_size 10240M;
proxy_request_buffering off;
# 超时设置
proxy_connect_timeout 3600s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
}
}
3. 创建证书验证目录
sudo mkdir -p /var/www/certbot
sudo chown -R nginx:nginx /var/www/certbot
4. 测试 Nginx 配置
sudo nginx -t
5. 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
6. 获取 Let's Encrypt 证书
# 确保域名已经解析到 180.97.221.140
# 可以用 ping 或 nslookup 验证
ping 3d.yydd.ai
# 获取证书
sudo certbot --nginx -d 3d.yydd.ai -d www.3d.yydd.ai
# 按照提示操作:
# 1. 输入邮箱(用于证书过期提醒)
# 2. 同意服务条款
# 3. 选择是否重定向 HTTP 到 HTTPS(选择 2 - 强制 HTTPS)
7. 验证证书
# 查看证书信息
sudo certbot certificates
# 测试自动续期
sudo certbot renew --dry-run
8. 设置自动续期
Let's Encrypt 证书有效期为 90 天,需要定期续期:
# Certbot 会自动创建 cron 任务
# 查看续期任务
sudo systemctl status certbot-renew.timer
# 手动续期(测试)
sudo certbot renew
方案二:Cloudflare SSL(零配置)
如果域名使用 Cloudflare 作为 DNS:
1. 登录 Cloudflare
访问:https://dash.cloudflare.com
2. 添加域名(如果还没有)
- 添加站点:YYDD.AI
- 按照提示修改域名服务器
3. 配置 DNS 记录
类型 名称 内容 代理状态
A 3d 180.97.221.140 已代理(橙色云朵)
4. 配置 SSL/TLS
在 Cloudflare 面板:
-
SSL/TLS → 概述
- 选择:灵活(Flexible) 或 完全(Full)
- 灵活:Cloudflare到用户HTTPS,Cloudflare到服务器HTTP
- 完全:两端都使用HTTPS(推荐,但需要服务器有证书)
-
SSL/TLS → 边缘证书
- 启用:始终使用 HTTPS
- 自动 HTTPS 重写:开启
- 最低 TLS 版本:TLS 1.2
5. 修改 Nginx 配置(使用 Cloudflare)
server {
listen 80;
server_name 3d.yydd.ai;
location / {
proxy_pass http://127.0.0.1:2320;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10240M;
proxy_request_buffering off;
}
}
优势:
- ✓ 零配置,Cloudflare 自动提供 SSL
- ✓ 免费 CDN 加速
- ✓ DDoS 防护
- ✓ 自动续期
方案三:acme.sh(轻量级)
1. 安装 acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc
2. 获取证书(DNS验证)
# 使用 DNS API(推荐)
export CF_Token="你的Cloudflare_API_Token"
export CF_Account_ID="你的Cloudflare_Account_ID"
acme.sh --issue --dns dns_cf -d 3d.yydd.ai -d www.3d.yydd.ai
3. 安装证书到 Nginx
acme.sh --install-cert -d 3d.yydd.ai \
--key-file /etc/nginx/ssl/3d.yydd.ai.key \
--fullchain-file /etc/nginx/ssl/3d.yydd.ai.crt \
--reloadcmd "systemctl reload nginx"
FRP 配置调整
如果需要在 NAS 服务器上配置 HTTPS,需要修改 FRP 配置:
在云服务器(frps.toml)
bindPort = 7000
vhostHTTPPort = 2320 # HTTP
vhostHTTPSPort = 2443 # HTTPS(新增)
在 NAS 服务器(frpc.toml)
serverAddr = "180.97.221.140"
serverPort = 7000
[[proxies]]
name = "youyidian-3d-http"
type = "http"
localIP = "127.0.0.1"
localPort = 4320
customDomains = ["3d.yydd.ai"]
[[proxies]]
name = "youyidian-3d-https"
type = "https"
localIP = "127.0.0.1"
localPort = 4320
customDomains = ["3d.yydd.ai"]
验证 HTTPS
1. 浏览器访问
https://3d.yydd.ai
2. 命令行测试
# 测试 SSL 证书
curl -I https://3d.yydd.ai
# 详细 SSL 信息
openssl s_client -connect 3d.yydd.ai:443 -servername 3d.yydd.ai
3. 在线工具
- SSL Labs测试:https://www.ssllabs.com/ssltest/
- 输入:3d.yydd.ai
- 目标评分:A 或 A+
常见问题
1. 证书获取失败
# 检查域名解析
nslookup 3d.yydd.ai
dig 3d.yydd.ai
# 检查80端口是否开放
sudo firewall-cmd --list-all
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
2. Nginx 启动失败
# 查看错误日志
sudo journalctl -u nginx -f
# 检查配置语法
sudo nginx -t
# 查看端口占用
sudo netstat -tlnp | grep :80
sudo netstat -tlnp | grep :443
3. 证书过期
# 手动续期
sudo certbot renew --force-renewal
# 查看证书有效期
sudo certbot certificates
4. 混合内容警告
如果页面有 HTTP 资源:
# 在 Nginx 配置中添加
add_header Content-Security-Policy "upgrade-insecure-requests";
推荐方案对比
| 方案 | 难度 | 成本 | 性能 | 维护 |
|---|---|---|---|---|
| Nginx + Certbot | ⭐⭐⭐ | 免费 | 高 | 自动续期 |
| Cloudflare | ⭐ | 免费 | 高(CDN) | 零维护 |
| acme.sh | ⭐⭐ | 免费 | 高 | 自动续期 |
建议
如果域名已在 Cloudflare: → 使用 方案二(Cloudflare SSL)
- 最简单,零配置
- 免费 CDN 加速
- 自动 HTTPS
如果需要完全控制: → 使用 方案一(Nginx + Certbot)
- 完全掌控
- 性能最佳
- 适合企业环境
部署步骤总结
快速部署(Cloudflare)
1. Cloudflare 添加 DNS 记录
A 3d 180.97.221.140 代理(橙色)
2. 启用 SSL/TLS(灵活模式)
3. 完成!访问 https://3d.yydd.ai
完整部署(Nginx + Let's Encrypt)
1. 安装 Nginx 和 Certbot
sudo yum install -y nginx certbot python3-certbot-nginx
2. 配置 Nginx
sudo vi /etc/nginx/conf.d/3d-yydd-ai.conf
3. 启动 Nginx
sudo systemctl start nginx
4. 获取证书
sudo certbot --nginx -d 3d.yydd.ai
5. 完成!访问 https://3d.yydd.ai
下一步
- ✅ 修复 TypeScript 编译错误
- ✅ 重新部署到 Docker
- ⏳ 配置域名 DNS 解析
- ⏳ 选择并实施 HTTPS 方案
- ⏳ 测试 HTTPS 访问
配置时间: 2025-10-26
域名: 3D.YYDD.AI
服务器: 180.97.221.140
状态: 待配置