【问题标题】:How to resolve "HttpException: Error 413" (SonarQube)如何解决“HttpException:错误 413”(SonarQube)
【发布时间】:2017-01-22 17:29:36
【问题描述】:

我最近安装了最新版本的 Jenkins,SonarQube 6.0(在单独的服务器)并且当 Jenkins 作业 尝试将 声纳扫描仪 结果上传到 SonarQube 服务器 时,我收到以下错误:

'ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
at org.sonar.runner.api.Runner.execute(Runner.java:100)
at org.sonar.runner.Main.executeTask(Main.java:70)
at org.sonar.runner.Main.execute(Main.java:59)
at org.sonar.runner.Main.main(Main.java:53)
Caused by: org.sonarqube.ws.client.HttpException: Error 413 on http://****`

可能是什么原因? 声纳项目属性出错?

【问题讨论】:

  • 请参阅this 对 HTTP 413 的解释。您能谈谈项目规模吗?
  • SonarQube 是在做一个逆向策略吗?在这种情况下,配置可能不正确。例如对于 httpd,如果您设置了 LimitRequestBody 参数 (httpd.apache.org/docs/2.4/mod/core.html#limitrequestbody),则您已达到此限制。

标签: jenkins sonarqube sonar-runner sonarqube-scan


【解决方案1】:

我的 sonarqube 服务器位于 nginx 代理后面时遇到了同样的错误。

413 == Request entity too large 正如@jeroen-heier 所说。

我对我的 nginx 配置进行了这样的更改

server {
  ...
  client_max_body_size 20M;
  ....
}

允许请求为 20 兆字节,并且修复了它。

【讨论】:

  • 提示#1:http-server 没有显示在 sonar 的配置文件中。您可以通过运行sudo server nginx stop 并查看 url 是否可以访问来检查您的声纳服务器是否正在使用 nginx。提示#2:除了server {},它还可以是http 或location 块。查看documentation 了解更多信息。
【解决方案2】:

回答我自己的问题。在 sonar.properties 文件中设置以下属性时出现错误:

#sonar.web.host=0.0.0.0

取消注释并设置为地址意味着只有具有该地址的客户端才能访问声纳 qube。

【讨论】:

  • https 413错误与此无关!它是需要上传的有效载荷大小的东西。如果负载以 kbs 为单位,则不会出现此错误。
  • 请把它作为解决方案删除。
  • 自从我发布此内容以来已经很久了,据我记得,配置 sonar.web.host 错误导致了 413 http 错误。将其恢复为显示的默认值即可修复它。
  • @MisterTommyCat 根据您的最后评论,我建议您编辑您的初始问题,以明确即使 413 错误是指有关超出有效负载的内容,修复 sonar.web.host参数也修复了 413 错误。
  • 这不是解决方案
【解决方案3】:

如果你在 docker 中运行 sonar,默认的 sonar 镜像不包含 nginx 服务器,所以容器中没有什么可以做的

我是在k8s上跑的,在声纳服务之前有一个入口,所以你应该配置入口和服务

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: sonarqube
  namespace: default
  annotations:
    ingress.kubernetes.io/proxy-body-size: "20M"
spec:
  rules:
...

要通过 helm 图表获取此信息,请添加

ingress:
  enabled: true
  annotations:
    ingress.kubernetes.io/proxy-body-size: "20M"

【讨论】:

    【解决方案4】:

    如果您使用的是nginx-ingress,请添加 nginx.ingress.kubernetes.io/proxy-body-size: "20M" 进入annotations:

    【讨论】:

    • 我正准备将这个答案添加到帖子中......因为我在阅读帖子时跳过了它并且花了相当长的时间寻找解决方案!我应该读得更慢!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-12-16
    • 2017-03-05
    • 2015-03-17
    • 2021-02-22
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多