TL:博士,如果請求使用nginx的error_page指令重定向,我怎麼能確保自定義頭與此重定向通過。Nginx的傳遞HTTP頭通過error_page重定向
我目前正在實現一個系統,其中nginx對LDAP服務器進行身份驗證並充當反向代理。它基於此https://www.nginx.com/blog/nginx-plus-authenticate-users/ 它的工作方式是,它有一個全能的服務器模塊,它將請求發送到在另一個端口上運行的認證頁面,這會根據cookie的內容返回403或200 。如果這是403,則用戶被髮送到登錄頁面(如果200到達目的地)。
nginx conf的示例如下: location/{ auth_request/auth-proxy;
# redirect 401 to login form
error_page 401 =200 /login;
proxy_pass http://backend/;
}
location /login {
proxy_pass http://backend/login;
# Login service returns a redirect to the original URI
# and sets the cookie for the ldap-auth daemon
proxy_set_header X-Target $request_uri;
}
location = /auth-proxy {
internal;
# The ldap-auth daemon listens on port 8888, as set
# in nginx-ldap-auth-daemon.py.
# Change the IP address if the daemon is not running on
# the same host as NGINX/NGINX Plus.
proxy_pass http://127.0.0.1:8888;
的問題是,我做的改變,使認證兼職並返回一個403碼,而不管該cookie是否有效。不過,我想讓用戶知道登錄頁面發生了這種情況,因此Python身份驗證代碼會設置帶有錯誤值的X-authenticationfail標頭。
我檢查了這部作品通過使用curl發送超時cookie來驗證碼,並讀取頭回來。然而,當登錄python代碼被調用時,這個頭信息已經消失。我認爲這是由於nginx不轉發它。我試圖包含「proxy_set_header X-authenticationfail $ http_x_authenticationfail;」,「add_header X-authenticationfail」這樣的行「test」always;「在error_page指令之前,但這不起作用。我也嘗試過在同一地點使用「proxy_pass_header X-authenticationfail」,但這也失敗了。
服務器塊具有「上proxy_pass_request_headers」設置設置「上underscores_in_headers」,和。在登錄塊中,放置「proxy_set_header X-authenticationfail」testvalue「;」獲得了登錄python代碼的價值,並從那裏回到瀏覽器。
感謝您獲得這麼多!
簡而言之'proxy_set_header X-Authenticationfail $ sent_http_x_authenticationfail'在'/ login'位置 –
只是去嘗試,仍然沒有運氣, – James
另外把'$ auth_request_set $ falure_reason sent_http_x_authenticationfail;''下面權auth_request'。你甚至不必在任何地方使用'$ falure_reason'。不知何故,這條線的存在將使我的第一個解決方案工作 –