You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2实例部署的Uvicorn+Nginx应用如何配置HTTPS访问

问题根因

你遇到的ERR_SSL_PROTOCOL_ERROR错误核心原因是:仅将Nginx监听端口改为443但未配置SSL证书及HTTPS相关参数,Nginx在443端口仍按HTTP协议响应,浏览器用HTTPS协议发起请求时握手失败,因此报错。

解决步骤
  • 第一步:生成SSL证书
    如果只是测试用,可先生成自签名证书;如果是生产环境使用,建议绑定域名后申请可信CA颁发的免费证书即可。
    生成自签名证书执行命令:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

执行过程中提示输入信息时,Common Name项填写你的EC2公网IP12.34.56.78即可。

  • 第二步:修改Nginx的Hosting配置文件
    替换为以下内容:
# 可选配置:HTTP请求自动跳转HTTPS
server {
    listen 80;
    server_name 12.34.56.78;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name 12.34.56.78;

    # 关联SSL证书
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    # 通用SSL安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://127.0.0.1:8000;
        # 可选配置:透传客户端信息给后端服务
        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;
    }
}
  • 第三步:重载Nginx配置生效
    先验证配置语法是否正确:
sudo nginx -t

提示test is successful后执行重载命令:

sudo systemctl reload nginx
  • 第四步:访问验证
    自签名证书不受浏览器信任,首次访问会弹出不安全提示,手动选择「高级-继续访问」即可正常使用服务。

内容的提问来源于stack exchange,提问作者Madhav mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:21:01