Saturday, March 23, 2013

Jenkins + nginx

Nur als Notiz für mich selbst:

Nach der Umstellung von Apache auf nginx als Reverse Proxy konnte ich im Jenkins keine Pakete mehr manuell bauen. In den Logs war dann folgendes zu finden:

Mar 23, 2013 5:21:08 PM hudson.security.csrf.CrumbFilter doFilter
WARNING: No valid crumb was included in request for /job/GPW/build. Returning 403.

Bei AJAX-Requests wird ein Header ".crumb" mitgeschickt - zum Schutz vor CSRF. nginx filtert aber invalide Header raus. Ein Workaround wäre, bei nginx das Filtern auszuschalten. Will ich aber nicht. Deswegen einfach in der /etc/init.d/jenkins einfach den Aufruf etwas anpassen:

[...]$JAVA $JAVA_ARGS -Dhudson.security.csrf.requestfield=X-Jenkins-crumb -jar $JENKINS_WAR $JENKINS_ARGS[...]

Damit wird der Header X-Jenkins-crumb verwendet. Und alles funktioniert wieder...

2 comments:

BURNERSK said...

Danke für die Info!

Ich stand bis eben vor dem gleichen Problem... :D

Sebastian Gröbler said...

Guter Tip!

Ich würde aber empfehlen, dass in den JAVA_ARGS der jenkins config hinzuzufügen. Für Ubuntu z.B. in /etc/default/jenkins zu finden.