web-dev-qa-db-ja.com

Nginx-HTTP AUTHを転送-ユーザー?

NginxとJenkins(Hudson)に問題があります。 HTTP基本認証でJenkinsインスタンスのリバースプロキシとしてNginxを使用しようとしています。

これまでのところ機能しますが、認証ユーザー名でヘッダーを渡す方法はわかりませんか?

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;

}

15
opHASnoNAME

このディレクティブをロケーションブロックに追加してみてください

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;
19

これをJenkinsリバースプロキシ認証プラグインで機能させるには:

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

Authorizationヘッダーをリセットしない場合、nginxはデフォルトでそれを転送し、リバースプロキシ認証プラグインを有効にすると、Jenkins(jetty)はユーザーの再認証を試み、失敗します。

nginxバージョン1.12.1、Jenkins 2.113。

6
Olli