J'ai des problèmes avec Nginx et Jenkins (Hudson). J'essaie d'utiliser Nginx comme proxy inverse pour l'instance Jenkins avec l'authentification de base HTTP.
Cela fonctionne jusqu'à présent, mais je ne sais pas comment passer l'en-tête avec le nom d'utilisateur d'authentification?
location / {
auth_basic "Restricted";
auth_basic_user_file /usr/share/nginx/.htpasswd;
sendfile off;
proxy_pass http://192.168.178.102:8080;
proxy_redirect default;
proxy_set_header Host $http_Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-User $http_authorization;
proxy_max_temp_file_size 0;
#this is the maximum upload size
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
Essayez d'ajouter ces directives à votre bloc d'emplacement
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
Pour que cela fonctionne avec le plugin d'authentification proxy inverse Jenkins:
proxy_set_header Authorization "";
proxy_set_header X-Forwarded-User $remote_user;
Si vous ne réinitialisez pas l'en-tête Authorization
, nginx le transmettra par défaut, et lors de l'activation du plugin d'authentification proxy inverse, Jenkins (jetty) essaiera de ré-authentifier l'utilisateur, et échoue.
nginx version 1.12.1, Jenkins 2.113.