Ubuntu

Nginx - 轉發 HTTP AUTH - 使用者

  • June 12, 2020

我在使用 Nginx 和 Jenkins (Hudson) 時遇到了一些麻煩。我正在嘗試使用 Nginx 作為具有 HTTP 基本身份驗證的 Jenkins 實例的反向代理。

到目前為止它工作正常,但我不知道如何使用身份驗證使用者名傳遞標頭。

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

嘗試將此指令添加到您的位置塊

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

要使其與 Jenkins 反向代理身份驗證外掛一起使用:

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

如果您不重置Authorization標頭,則預設情況下 nginx 會轉發該標頭,並且在啟用反向代理身份驗證外掛時,Jenkins (jetty) 將嘗試重新對使用者進行身份驗證,但會失敗。

nginx 版本 1.12.1,詹金斯 2.113。

引用自:https://serverfault.com/questions/511206