SonarQube 代理配置,棘手

Posted

技术标签:

【中文标题】SonarQube 代理配置,棘手【英文标题】:SonarQube Proxy Configuration, Tricky 【发布时间】:2013-12-10 13:09:45 【问题描述】:

我无法让代理配置适用于 SonarQube 4.0,因此我可以安装插件。

当我打开http://localhost:9000/updatecenter/available 时,它显示错误:“未连接到更新中心。请检查您的互联网连接和日志。”

在 sonar.log 中我读到:“org.sonar.api.utils.HttpDownloader$HttpException:下载失败 [http://update.sonarsource.org/update-center.properties]。响应代码:403”

在 sonar.properties 中,我使用与其他程序相同的代理对其进行了配置:

sonar.updatecenter.activate=true
http.proxyHost=<host>
http.proxyPort=<port>
http.proxyUser=<username>
http.proxyPassword=<password>

我尝试在 wrapper.properties 中进行相同的配置,但它也不起作用。

对于代理主机,我尝试了短名称和全名。对于用户名,我只尝试了用户名和&lt;DOMAINNAME&gt;\&lt;username&gt;&lt;DOMAINNAME&gt;\\&lt;username&gt;

没有任何效果。有什么想法吗?

【问题讨论】:

如果您的公司使用 NTLM 类型的代理,您可以尝试使用 CNTLM 应用程序。通过使用它,您可以绕过代理。 我像你一样进行了配置,并且运行顺利。我使用了代理的 IP。 在 SonarQube 5.1.1 中,代理配置不应在 conf/wrapper.properties 中进行,而应在 conf/sonar.properties 中进行。我已经在那里配置了代理,可以看到插件列表,但无法下载或更新任何插件,因为错误:***.com/questions/23289159/… 【参考方案1】:

我的代理配置有效,看起来如下:

http.proxyHost=proxy.domain.de
http.proxyPort=8888

请注意,网址前没有“http://”或其他任何内容。

另外,我不使用代理身份验证,所以我把“proxyUser”和“proxyPassword”注释掉了。

【讨论】:

【参考方案2】:

对于那些在 Docker 中运行 SonarQube 的人,我对这里提到的任何建议都不满意。但我发现以下解决方案对我有用 (here):

docker run -d sonarqube -Dhttp.proxyHost=<myproxy.url.com> -Dhttp.proxyPort=<port>

在 docker-compose 表示法中与此等效:

services:
  sonarqube:
    image: sonarqube
    command: -Dhttp.proxyHost=<myproxy.url.com> -Dhttp.proxyPort=<port>

【讨论】:

这完全为我们的公司代理成功了!请注意,要通过 Active Directory 进行身份验证,您可以通过取消反斜杠来指定域和用户。例如: -Dhttp.proxyUser=DOMAIN\\用户名【参考方案3】:

只是一个信息:我也遇到了这个问题。 我可以看到插件,但无法下载。问题是,您必须将此行添加到您的 sonar.properties 中,用于 https:

# https-proxy
sonar.web.javaAdditionalOpts=-Dhttps.proxyHost=xxxxx -Dhttps.proxyPort=xxxx -Dhttps.proxyUser=xxxx -Dhttps.proxyPassword=xxxx

【讨论】:

对我不起作用。通过设置“sonar.web.javaAdditionalOpts”中的选项或直接设置。【参考方案4】:

我使用了官方文档,它可以工作: Using the Update Center behind a Proxy

http.proxyHost=<your.proxy.host>
http.proxyPort=<yout.proxy.port>

问候,

【讨论】:

【参考方案5】:

在 sonar.properties 中设置代理不带“http://”,只有 http.proxyHost=myproxy.domain.pt

另一个建议是在 wrapper.conf 上也添加这行:

wrapper.java.additional.3=-Dhttp.proxySet=true
wrapper.java.additional.4=-Dhttp.proxyHost=myproxy.domain.pt
wrapper.java.additional.5=-Dhttp.proxyPort=myproxy.port
wrapper.java.additional.6=-Dhttps.proxyHost=myproxy.domain.pt
wrapper.java.additional.7=-Dhttps.proxyPort=myproxy.port

如果你有一个 docker 卷,请在使用此配置部署新卷之前将其删除,否则它将保留原始配置

【讨论】:

【参考方案6】:

Appart from http,别忘了在 sonar.properties 中设置你的 https 代理配置(更新服务器在 HTTPS 后面):

https.proxyHost=<host>
https.proxyPort=<port>
https.proxyUser=<username>
https.proxyPassword=<password>

【讨论】:

以上是关于SonarQube 代理配置,棘手的主要内容,如果未能解决你的问题,请参考以下文章

代理服务器路由器配置案例

SonarQube - 无法连接到没有代理的更新中心

IIS中的反向代理上的SonarQube拒绝执行脚本

代理商背后的Jenkins SonarQube扫描仪

SonarQube Azure AD 集成不起作用

在安全的反向代理后面运行sonarqube时,“请求中的CSRF错误”