web-dev-qa-db-fra.com

Pourquoi Jenkins se plaint-il que ma configuration de proxy inverse est défectueuse?

Je ne sais pas pourquoi, après la mise à jour de Jenkins vers la version 1.591 (Ubuntu Server 12.04), le proxy inverse configuré correctement à l'origine est maintenant endommagé. Mon paramètre actuel est exactement le même que celui indiqué dans le wiki Jenkins:

ProxyPass /jenkins http://localhost:8081/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8081/jenkins
ProxyPreserveHost On
ProxyRequests Off
AllowEncodedSlashes NoDecode
<Proxy http://localhost:8081/jenkins*>
Order deny,allow
Allow from all
</Proxy>

aussi --prefix=/jenkins a été ajouté dans le fichier /etc/default/jenkins

Est-ce un bug chez Jenkins? 

16
Kevin

Il s'avère que tout fonctionne bien même si le message ennuyeux apparaît de manière persistante. Je pense que c'est un bug mineur de la version.

5
Kevin

J'ai été confronté à ce problème avec Jenkins en tant que Windows Service Package.

Selon leur wiki

Assurez-vous que l'URL Jenkins configurée dans la configuration système correspond à l'URL utilisée pour accéder à Jenkins.

Pour accéder à la configuration du système:

  1. Allez sur votre page Jenkins
  2. Cliquez sur Gérer Jenkins
  3. Cliquez sur Configurer le système
  4. Faites défiler jusqu'à Jenkins Location et recherchez l'URL Jenkins.

Assurez-vous que la valeur du port correspond à la valeur de port définie dans la section <arguments> du fichier jenkins.xml situé dans le dossier Jenkins sur votre ordinateur.

26
Josh Gieringer

Pour moi, le correctif consistait à ajouter:

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

Cela l'a fait cesser de se plaindre.

6
Robin Winslow

Voici un lien indique clairement que certaines choses sont modifiées après 1.552, donc l’ajout de ces nouvelles lignes;

 nocanon and AllowEncodedSlashes

Résolu mon problème et l'avertissement est parti.

3
Cem

Jenkins a mis en place une surveillance proactive pour s'assurer que les serveurs proxy direct et inverse sont correctement configurés. Dans la version 1.552, ces tests ont été améliorés afin de détecter les configurations de proxy incorrectes qui n'étaient auparavant pas signalées comme étant endommagées. À partir de la version 1.572, même les instances de Jenkins qui ne reposent pas sur un proxy inverse affichent cet avertissement.

La correction d’une configuration de proxy inverse défectueuse dépend fortement de votre serveur Web et de votre conteneur d’applications Web. C’est pourquoi de nombreuses autres réponses à votre question ont été publiées. L'article de Jenkins Wiki sur ce sujet, " Jenkins dit que ma configuration de proxy inverse est cassée ", décrit plusieurs manières de résoudre ce problème dans les commentaires.

De l'article ci-dessus:

Pour qu'un proxy inverse fonctionne correctement, il doit réécrire les deux fichiers demande et la réponse.

Mais le reverse proxy correct implique également l’une des deux options suivantes:

  1. réécrire la réponse; ou
  2. définir l'en-tête X-Forwarded-Host (et peut-être X-Forwarded-Port) sur la demande transférée.

Dans mon cas, il s’agissait en réalité d’un problème avec la première option, pour laquelle la réécriture de ma réponse n’encodait pas correctement les barres obliques. Si vous utilisez Apache HTTPD avec Tomcat, vous devez ajouter la prise en charge des barres obliques codées aux serveurs les deux, et pas uniquement à Apache HTTPD.

Voici les instructions pour résoudre ce problème dans mon cas particulier: Jenkins 2.1.41 sur une instance Amazon Linux EC2, avec Apache 2.4, Tomcat 8.5 et Tomcat Connector.

Dans /etc/httpd/conf.d/ssl.conf, ajoutez la ligne suivante pour votre Jenkins Host ou VirtualHost:

AllowEncodedSlashes NoDecode

Ajoutez la ligne suivante à /usr/share/Tomcat8/conf/catalina.properties:

org.Apache.Tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

Redémarrez les deux services:

service httpd restart
service Tomcat8 restart

Actualisez votre page de gestion Jenkins. Le message d'avertissement aura disparu.


Un exemple d'implémentation de la deuxième option dans Apache HTTPD:

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

et pour NGINX:

proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
0
vallismortis

Pour nginx, cela m'a également aidé:

proxy_redirect      http://localhost:8080 https://your.ssl.domain.name

Ne pas inclure les barres obliques de fin dans les URL ci-dessus, et pas non plus dans l'URL proxy_pass.

0
Ghasan