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

在AWS E2部署React+ASP.NET Core API配置通配符SSL后报错求助

解决ASP.NET Core + React部署HTTPS时的net::ERR_SPDY_PROTOCOL_ERROR问题

我来帮你拆解这个问题的可能原因和解决步骤——之前处理过类似的SPDY协议错误,大多和SSL配置、反向代理冲突或者IIS与Nginx的协同设置有关,咱们一步步排查:

1. 先确认IIS的SSL基础配置是否到位

  • 通配符证书是否正确导入到IIS的服务器证书存储?一定要检查证书的私钥权限:右键证书→所有任务→管理私钥,给IIS_IUSRS组或者你的应用池账户分配读取权限,否则IIS没法正常使用证书。
  • 站点绑定检查:确保HTTPS绑定的端口是443,证书选择了正确的通配符证书,暂时不要勾选“要求SSL”(等问题解决后再开启强制HTTPS)。
  • ASP.NET Core应用的HTTPS端点配置:检查appsettings.json里的Urls配置,或者Program.cs中的UseUrls方法,确保包含HTTPS端点,比如:
    "Urls": "https://*:443;http://*:80"
    

2. 排查IIS与Nginx的端口冲突(核心问题!)

你同时部署了IIS和Nginx,最容易踩的坑就是端口冲突:

  • IIS和Nginx不能同时监听443端口!必须调整其中一个的端口:要么让Nginx监听443,反向代理到IIS的HTTP端口(比如8080);要么让IIS监听443,Nginx作为其他用途。
  • 如果你选择用Nginx做HTTPS反向代理,一定要配置正确的SSL参数,避免协议兼容问题:
    server {
        listen 443 ssl; # 可以尝试加上http2,比如listen 443 ssl http2;
        server_name *.yourdomain.com;
    
        # 通配符证书的路径,Windows下注意用正斜杠或双反斜杠
        ssl_certificate "C:/nginx/certs/your-wildcard.crt";
        ssl_certificate_key "C:/nginx/certs/your-wildcard.key";
    
        # 启用安全的SSL协议和加密套件,避免过时协议触发SPDY错误
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
    
        location / {
            proxy_pass http://localhost:80; # 指向IIS的HTTP端口
            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; # 这个很重要,告诉后端当前是HTTPS
        }
    }
    
  • 另外,SPDY是HTTP/2的前身,Chrome现在默认用HTTP/2,如果你开启了Nginx的HTTP/2仍报错,可以暂时去掉http2参数,只用listen 443 ssl;测试。

3. 检查React应用的API请求与CORS配置

  • 确保React里的所有API请求都是HTTPS开头的,比如https://api.yourdomain.com/api/xxx,避免混合内容错误(虽然这不是SPDY直接原因,但可能引发连锁问题)。
  • ASP.NET Core的CORS配置要允许HTTPS前端域名:
    builder.Services.AddCors(options =>
    {
        options.AddPolicy("AllowFrontend", policy =>
        {
            policy.WithOrigins("https://your-frontend-domain.com")
                  .AllowAnyMethod()
                  .AllowAnyHeader();
        });
    });
    app.UseCors("AllowFrontend");
    

4. 浏览器端的临时排查

  • SPDY/HTTP2错误有时候和浏览器缓存有关,试试用Chrome隐身模式打开页面,或者清除缓存(Ctrl+Shift+Delete)。
  • 可以在Chrome的chrome://flags里暂时禁用“HTTP/2”或“QUIC”协议,测试是否还报错,以此判断是不是浏览器协议兼容问题。

5. 检查AWS E2的网络配置

  • 确保E2实例的安全组允许443端口的入站流量,网络ACL也配置了443端口的进出规则,端口未开放也可能导致奇怪的协议错误。

内容的提问来源于stack exchange,提问作者Davinder Pal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:28:48