ASP.NET Core 3.1部署AWS EC2后Google登录报Resource temporarily unavailable
1. 先定位错误根因
你日志中返回的SocketException (11): Resource temporarily unavailable错误,本质是ASP.NET Core应用在调用Google OAuth接口兑换授权码时网络连接失败,并非Nginx转发用户请求到应用的环节出错,优先排查容器到Google服务的网络连通性:
- 本地运行正常是因为本地网络可正常访问Google服务,EC2环境的网络限制是首要排查点
- 进入运行ui服务的容器内部测试连通性:
- 执行
docker ps找到ui服务对应的容器ID - 执行
docker exec -it <容器ID> bash进入容器 - 执行
curl -v https://accounts.google.com,查看是否能正常收到响应
- 执行
2. 网络连通性问题修复
非中国区EC2
检查EC2实例绑定的安全组出站规则,确认已放行443端口的TCP出站请求(默认安全组允许所有出站请求,若你手动修改过规则需要补充配置)。
中国区EC2
因网络限制无法直接访问Google服务,需要给ASP.NET Core容器配置合法的HTTP/HTTPS代理,在docker-compose.yml的ui服务environment配置段新增如下内容:
HTTP_PROXY: http://<代理服务地址>:<端口> HTTPS_PROXY: http://<代理服务地址>:<端口> NO_PROXY: localhost,db,127.0.0.1
NO_PROXY配置用于避免内部服务访问(比如访问数据库)走代理,需根据你的内部服务地址补充。
3. 连通性正常仍报错的后续排查
如果容器内可正常访问Google服务,再检查回调地址相关配置:
3.1 配置ASP.NET Core信任转发头
你当前的Nginx配置已经正确添加了X-Forwarded-Proto等头,但ASP.NET Core默认不会信任这些转发头,会导致OAuth回调地址生成错误(比如生成http前缀的地址而非https),需在Startup.cs的Configure方法最开头添加转发头中间件:
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto });
3.2 检查Google OAuth配置
确认Google Cloud后台对应OAuth客户端的授权重定向URI已经添加了线上地址https://<你的域名>/signin-google,本地使用的localhost回调地址无法在线上环境生效。
4. 快速验证方案
你可以临时在EC2安全组放行5000端口的入站请求,直接通过http://<EC2公网IP>:5000访问应用测试登录功能:
- 如果可以正常登录,说明问题出在Nginx和ASP.NET Core的转发头配置环节
- 如果仍然无法登录,完全排除Nginx配置问题,继续排查容器网络配置
内容的提问来源于stack exchange,提问作者Mark Pendlebury

