My feeling is that the library used by SonarLint does not follow correctly the redirects.
* Trying 52.203.228.135...
* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 697 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* server certificate verification OK
* server certificate status verification SKIPPED
* server certificate expiration date OK
* server certificate activation date OK
* certificate public key: RSA
* certificate version: #3
* start date: Mon, 17 Aug 2015 00:00:00 GMT
* expire date: Sat, 03 Sep 2016 23:59:59 GMT
* issuer: C=FR,ST=Paris,L=Paris,O=Gandi,CN=Gandi Standard SSL CA 2
* compression: NULL
* ALPN, server did not agree to a protocol
> GET /api/qualityprofiles/search.protobuf?projectKey=org.testng:testng HTTP/1.1
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Thu, 11 Aug 2016 15:19:20 GMT
< Server: Apache
< Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
< Content-Length: 270
< Content-Type: text/html; charset=iso-8859-1
<
* Ignoring the response-body
* Trying 52.203.228.135...
* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 697 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* server certificate verification OK
* server certificate status verification SKIPPED
* server certificate expiration date OK
* server certificate activation date OK
* certificate public key: RSA
* certificate version: #3
*
subject: OU=Domain Control Validated,OU=Gandi Standard Wildcard SSL,CN=*.
sonarqube.com* start date: Fri, 03 Jun 2016 00:00:00 GMT
* expire date: Mon, 03 Jun 2019 23:59:59 GMT
* issuer: C=FR,ST=Paris,L=Paris,O=Gandi,CN=Gandi Standard SSL CA 2
* compression: NULL
* ALPN, server did not agree to a protocol
> GET /api/qualityprofiles/search.protobuf?projectKey=org.testng:testng HTTP/1.1
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Thu, 11 Aug 2016 15:19:34 GMT
< Server: SonarQube
< Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
< Cache-Control: no-cache, no-store, must-revalidate
< Content-Type: application/x-protobuf
< Content-Length: 2688
<
So the double encoding is not coming from the reverse proxy.