Nginx - Reenviar HTTP AUTH - Usuario

Nginx - Reenviar HTTP AUTH - Usuario

Tengo algunos problemas con Nginx y Jenkins (Hudson). Estoy intentando utilizar Nginx como proxy inverso para la instancia de Jenkins con autenticación básica HTTP.

Funciona hasta ahora, pero no tengo idea de cómo pasar el encabezado con el nombre de usuario de autenticación.

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;
}

Respuesta1

Intente agregar estas directivas a su bloque de ubicación

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

Respuesta2

Para que esto funcione con el complemento de autenticación de proxy inverso de Jenkins:

proxy_set_header Authorization "";
proxy_set_header X-Forwarded-User $remote_user;

Si no restablece Authorizationel encabezado, nginx lo reenviará de forma predeterminada y, al habilitar el complemento de autenticación de proxy inverso, Jenkins (jetty) intentará volver a autenticar al usuario y fallará.

nginx versión 1.12.1, Jenkins 2.113.

información relacionada