Das typische Problem ist, dass Jenkins gut abgesichert auf einem externen Server laufen soll, also ein Basic Auth vorgeschaltet werden soll und natürlich sollte auch nur Port 80 in der Firewall (iptables) freigeschaltet werden. Die Lösung ist nicht besonders kompliziert, aber da es meist Anleitungen für den Apache Webserver gibt und generell deutlich weniger Tipps für Nginx, habe ich mich entschlossen dieses vHost Beispiel hier abzulegen:
################################################################################ # JENKINS Nginx vhost ################################################################################ server { listen 80; server_name jenkins.example.tld; access_log /var/log/nginx/jenkins_access.log; error_log /var/log/nginx/jenkins_error.log; location / { auth_basic "Restricted (J)"; auth_basic_user_file /etc/nginx/htpasswd-jenkins; proxy_pass http://localhost:8080; proxy_set_header Authorization ""; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 4 32k; client_max_body_size 8m; client_body_buffer_size 128k; } }
Wichtig ist es vor allem bei einer vorgeschalteten Basic Auth diese Header nicht an den Jenkins weiterzureichen – denn meist möchte man genau dort die Jenkins-eigene Authentifizierung zusätzlich nutzen.