weixin_45840746 2024-05-20 12:08 采纳率: 35.6%
浏览 28
已结题

nginx代理报502的错误

在页面上报502的错误

目标地址:https://dashscope.aliyuncs.com/api/1/services/aion
请求地址:https://xiaohu.com/api/1/services/aion

代理是这么处理的:


location /api {
        proxy_ssl_name xiaohu.com;
        proxy_ssl_server_name on;
        proxy_pass https://dashscope.aliyuncs.com;
    }   

查看日志报:

2024/05/20 11:43:50 [error] 181249#181249: *138254 peer closed connection in SSL handshake (104: Connection reset by peer) while SSL handshaking to upstream, client: 117.26.10.18, server: xiaohu.com, request: "POST  /api/1/services/aion HTTP/1.1", upstream: "https://17.13.23.31:443 /api/1/services/aion", host: "xiaohu.com", referrer: "https://xiaohu.com/models/"
2024/05/20 11:43:50 [error] 181249#181249: *1382354 connect() to [2131:3000:210::30c]:443 failed (101: Network is unreachable) while connecting to upstream, client: 117.26.10.18, server: xiaohu.com, request: "POST /api/1/services/aion HTTP/1.1", upstream: "https://[2131:3000:210::30c]:443 /api/1/services/aion", host: "xiaohu.com", referrer: "https://xiaohu.com/models/"

请问一下该怎么解决哎,我会一个个尝试,解决才会结单

  • 写回答

19条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-20 12:08
    关注

    引自免费微信小程序:皆我百晓生

    看起来你的Nginx服务器在尝试转发到https://dashscope.aliyuncs.com时遇到了问题,返回了502 Bad Gateway错误。根据提供的日志信息,存在两种不同的错误情况:

    1. peer closed connection in SSL handshake (104: Connection reset by peer)
    2. connect() to [2131:3000:210::30c]:443 failed (101: Network is unreachable)

    第一种错误可能是上游服务器(dashscope.aliyuncs.com)在SSL握手过程中关闭了连接,这可能是因为证书验证失败、网络问题或者服务器过载。

    第二种错误表明Nginx试图通过IPv6地址连接到上游服务器,但没有成功,因为网络不可达。这可能是因为你的服务器配置错误,或者上游服务器不支持IPv6访问。

    为了解决这些问题,可以尝试以下步骤:

    第一步:检查上游服务器

    确保dashscope.aliyuncs.com能正常访问,并且你的Nginx服务器可以从当前IP地址访问它。你可以在命令行中使用curl工具测试:

    curl --insecure -v https://dashscope.aliyuncs.com/api/1/services/aion
    

    如果返回状态码不是200,或者有证书警告,那么你需要检查上游服务器的配置。

    第二步:确认DNS解析

    确保你的Nginx服务器正确地解析dashscope.aliyuncs.com到正确的IP地址。你可以使用nslookupdig命令进行检查:

    nslookup dashscope.aliyuncs.com
    

    第三步:检查Nginx配置

    确保Nginx配置中的proxy_pass指向正确的IP地址,而不是IPv6地址。如果上游服务器只接受IPv4连接,你应该去掉proxy_ssl_nameproxy_ssl_server_name配置,因为它们可能导致Nginx尝试使用服务器名称进行SNI(Server Name Indication),这可能会导致IPv6的尝试。修改后的配置如下:

    location /api {
        # Remove these lines if IPv6 isn't needed or supported
        # proxy_ssl_name xiaohu.com;
        # proxy_ssl_server_name on;
    
        proxy_pass http://dashscope.aliyuncs.com;  # Use HTTP instead of HTTPS here for troubleshooting purposes
    }
    

    第四步:排查SSL问题

    如果问题仍然存在,可能是SSL证书的问题。你可以尝试禁用SSL验证以排除这个可能性:

    location /api {
        proxy_pass http://dashscope.aliyuncs.com;  # Use HTTP instead of HTTPS here for troubleshooting purposes
        proxy_ssl_verify off;
    }
    

    然后再次尝试访问。如果这样可以正常工作,那么可能需要更新Nginx的SSL证书或者信任阿里云的CA证书。

    第五步:重新加载Nginx配置

    应用更改后,记得重启或重新加载Nginx服务以使新配置生效:

    sudo nginx -t  # Test the configuration
    sudo systemctl reload nginx  # Reload Nginx
    

    第六步:检查日志

    在每次更改后,继续监控Nginx的日志,看是否有新的错误或警告出现。一旦问题解决,再逐步恢复之前的配置,例如启用HTTPS和SSL验证。

    如果你按照上述步骤操作后问题仍未解决,可能需要进一步调查Nginx与上游服务器之间的网络问题,或者联系阿里云支持获取更详细的帮助。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月27日
  • 创建了问题 5月20日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同