I have some trouble with Nginx and Jenkins (Hudson). Iam trying to use Nginx as Reverse Proxy for the Jenkins instance with HTTP Basic Authentication.

It works so far, but i have no idea how to pass the Header with the AUTH Username?

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

}

  • 1
    Note you probably want an extra 'd' in "X-Forwared-User". – Paul Jan 29 '15 at 16:44
up vote 9 down vote accepted

Try adding this directives to your location block

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;
  • This header is passing: Username: Basic YXJuZTpraWxsZXI, not the correct name from http auth (; – opHASnoNAME May 29 '13 at 17:32
  • 6
    This must be base64 encoded string en.wikipedia.org/wiki/Basic_access_authentication#cite_note-8 try to decoding it – Andrei Mikhaltsov May 31 '13 at 13:11
  • Authorization header must be base64 encoded header, yes. But that is not what the question is about. The question is about passing auth username in headers, not full authorization header. – Olli Apr 2 at 13:37

To get this to work with Jenkins reverse proxy auth plugin:

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

If you don't reset Authorization header, nginx will forward that by default, and when enabling reverse proxy auth plugin, Jenkins (jetty) will try to re-authenticate the user, and fails on that.

nginx version 1.12.1, Jenkins 2.113.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.