开发者社区 问答 正文

应用研发平台EMAS中,请问emas有办法解决代理问题吗?

应用研发平台EMAS中,请问emas有办法解决代理问题吗?

展开
收起
LLLA 2024-01-23 23:42:18 39 分享 版权
阿里云 AI 助理回答

在应用研发平台 EMAS 中,代理问题确实可以通过一些特定的配置和优化方法来解决。以下是针对代理问题的详细解决方案:


1. HTTPDNS 在代理环境下的使用

当存在中间 HTTP 代理时,客户端发起的请求中请求行会使用绝对路径的 URL。如果开启 HTTPDNS 并采用 IP URL 进行访问,中间代理可能会将 IP 信息作为真实访问的 HOST 信息传递给目标服务器,导致目标服务器无法处理无真实 HOST 信息的 HTTP 请求。

解决方案:

  • 方法一:使用原生 DNS 解析
    在代理模式下关闭 HTTPDNS 功能,改用原生 DNS 解析以规避该问题。

  • 方法二:修改服务端配置
    使用类似于 WAP 网关的方式,在 Header 字段中增加私有字段(如 X-Online-Host),服务端根据该字段进行验证。例如:

    connection.setRequestProperty("X-Online-Host", "www.example.com");
    

    注意:在绝大多数场景下,建议检测当前设备是否开启了网络代理,并在代理模式下不使用 HTTPDNS 进行域名解析。


2. 海外资源代理配置

在云构建或下载依赖时,如果遇到海外资源下载慢或超时的问题,可以通过以下方式优化:

配置代理步骤:

  1. 修改 /etc/hosts 文件
    在构建命令之前添加代理配置,确保关键域名能够正确解析。例如:

    ## 代理 dl.google.com
    sudo - sh -c "echo '220.181.174.33 dl.google.com' >> /etc/hosts"
    
    ## 代理 jcenter.bintray.com
    sudo - sh -c "echo '34.95.74.180 jcenter.bintray.com' >> /etc/hosts"
    
  2. 执行构建命令
    修改完成后,继续执行构建任务:

    cd $EMAS_RUNNER_CODE_DIR
    echo "building..."
    chmod +x ./gradlew
    ./gradlew clean assembleRelease
    

注意事项:

  • 优先使用阿里云 Maven 仓库
    建议按照以下顺序配置 Maven 仓库,以减少对海外资源的依赖:

    maven { url 'https://maven.aliyun.com/repository/public' }
    maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
    maven { url 'https://maven.aliyun.com/repository/google' }
    maven { url 'https://maven.aliyun.com/repository/jcenter' }
    maven { url 'https://maven.aliyun.com/repository/central' }
    
  • 离线集成 SDK
    如果代理仍然不稳定,可以选择离线集成 SDK 的方式,避免因网络问题导致构建失败。


3. HTTPS 场景下的代理问题

在 HTTPS 服务中,本地认证证书环节需要确认访问域名与证书一致。如果使用 IP URL 发起请求,系统网络库会使用 IP 信息进行验证,可能导致异常。

解决方案:

  • 方法一:关闭 HTTPDNS 功能
    在 HTTPS 场景下,建议关闭 HTTPDNS 功能以避免证书验证问题。

  • 方法二:修改客户端验证逻辑
    可参考以下文档调整客户端验证逻辑:

    • Android 端 HTTPS(含 SNI)业务场景:IP 直连方案。
    • iOS 端 HTTPS 场景使用 HTTPDNS。

4. 其他优化建议

  • 启用安装缓存
    在云构建配置中,打开安装缓存功能可以显著提升构建速度。如果启用了精确匹配,则不会使用低版本 build.gradle 对应的缓存。

  • 克隆代码慢的处理
    如果从 Gitee 克隆代码较慢,可以在克隆前添加自定义脚本:

    sudo - sh -c "echo '212.64.63.190 gitee.com' >> /etc/hosts"
    

总结

通过上述方法,您可以有效解决 EMAS 中的代理问题,包括 HTTPDNS 在代理环境下的使用、海外资源下载优化、HTTPS 场景下的代理问题等。建议优先使用阿里云提供的资源和服务,并在必要时结合代理配置和离线集成方式进一步优化。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答