Nginx - HTTP 인증 전달 - 사용자

Nginx - HTTP 인증 전달 - 사용자

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

답변1

위치 블록에 이 지시문을 추가해 보세요.

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

답변2

Jenkins 역방향 프록시 인증 플러그인과 함께 작동하려면 다음을 수행하세요.

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

헤더를 재설정하지 않으면 Authorizationnginx는 기본적으로 이를 전달하고 역방향 프록시 인증 플러그인을 활성화하면 Jenkins(jetty)가 사용자를 다시 인증하려고 시도하지만 실패합니다.

nginx 버전 1.12.1, 젠킨스 2.113.

관련 정보