Protéger Jenkins avec http auth nginx sauf url de rappel

J’ai installé jenkins sur mon serveur et je veux le protéger avec nginx http auth afin que:

http://my_domain.com:8080 http://ci.my_domain.com 

sera protégé sauf un endroit:

 http://ci.my_domain.com/job/my_job/build 

nécessaire pour déclencher la construction. Je suis un peu nouveau à nginx alors je suis resté avec nginx config pour ça.

 upstream jenkins { server 127.0.0.1:8080; } server { listen xxxx:8080; server_name *.*; location '/' { proxy_pass http://jenkins; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; auth_basic "Ressortingcted"; auth_basic_user_file /path/.htpasswd; } } 

J’ai essayé smth comme ci-dessus config mais quand je visite http://my_domain.com:8080 il n’y a pas d’authentification http.

Enfin, j’ai compris comment résoudre ce problème. Au début, vous devez désélectionner l’option “Activer la sécurité” sur la page Gérer Jenkins. Avec la sécurité désactivée, nous pouvons déclencher nos tâches avec des requêtes telles que http://ci.your_domain.com/job/job_name/build .

Si vous souhaitez append un jeton pour déclencher l’URL, vous devez activer la sécurité, choisissez «Stratégie d’autorisation masortingcielle basée sur un projet» et atsortingbuez des droits d’administrateur à l’utilisateur anonyme. Après cela, dans la page Configurer de votre projet sera l’option “Trigger builds à distance” où vous pouvez spécifier un jeton afin que votre demande ressemble à JENKINS_URL/job/onru/build?token=TOKEN_NAME

Donc, avec la sécurité désactivée, nous devons protéger http://ci.your_domain.com avec nginx http_auth sauf les URL comme /job/job_name/build' .

Et bien sûr, nous devons masquer le port 8080 aux requêtes externes. Comme mon serveur est sur Ubuntu, je peux utiliser le pare-feu iptables :

 iptables -A INPUT -p tcp --dport 8080 -s localhost -j ACCEPT iptables -A INPUT -p tcp --dport 8080 -j DROP 

Mais! Sur Ubuntu (je ne suis pas sûr d’autres linux oses), iptables disparaîtra après le redémarrage. Nous devons donc les enregistrer avec:

 iptables-save 

Et ce n’est pas la fin. Avec cette commande, nous obtenons juste un fichier avec iptables. Au démarrage, nous devons charger iptables et le plus simple est d’utiliser le package ‘uptables-persistent’:

 sudo apt-get install iptables-persistent iptables-save > /etc/iptables/rules 

Examinez de plus près iptables si nécessaire https://help.ubuntu.com/community/IptablesHowTo#Saving_iptables et bonne chance avec Jenkins!

Et il y a un bon exemple pour lancer jenkins sur le sous-domaine de votre serveur: https://wiki.jenkins-ci.org/display/JENKINS/Running+Hudson+behind+Nginx