Ubuntu
Nginx - 轉發 HTTP AUTH - 使用者
我在使用 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。