Wie kann ich eine nginx proxy_pass-Direktive einrichten, die auch HTTP Basic-Authentifizierungsinformationen enthält, die an den Proxy-Host gesendet werden?
Dies ist ein Beispiel für die URL, zu der ich einen Proxy erstellen muss:
http://username:[email protected]/export?uuid=1234567890
Das Endziel ist, dass 1 Server Dateien von einem anderen Server (demjenigen, zu dem wir einen Proxy-Server einrichten) präsentiert, ohne den URI des Proxy-Servers preiszugeben. Ich habe diese Funktion zu 90% korrekt ausgeführt, nachdem ich die hier gefundene Nginx-Konfiguration befolgt habe:
http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/
Ich muss nur die HTTP-Basisauthentifizierung hinzufügen, um sie an den Proxyserver zu senden
Antworten:
Ich habe vor einiger Zeit darüber geschrieben. Sehen Sie die Details hier:
http://shairosenfeld.blogspot.com/2011/03/authorization-header-in-nginx-for.html
Zum Beispiel:
"a2luZzppc25ha2Vk" ist "king: isnaked" base64-codiert, damit würde das funktionieren
http: // king: [email protected]
Fühlen Sie sich frei, Blog-Post für weitere Details zu überprüfen.
quelle
Ich habe das mit Alvosus Antwort verstanden, musste aber das Wort "Basic" in das Zitat des base64-Strings eingeben, damit es so aussah:
quelle
Setze proxy_set_header Authorization "USER_AND_PASS", wobei USER_AND_PASS = base64 (user: pass)
quelle
Basic
.Entfernen Sie den Autorisierungsheader, der von nginx mit weitergeleitet wird
proxy_set_header Authorization "";
.Ich habe nginx für die grundlegende Authentifizierung konfiguriert, aber der
Authorization
Header wurde in derproxy_pass
Direktive weitergegeben und das empfangende Ende konnte das Token nicht verarbeiten.(Speziell für meinen Fall wurde dieser Fehler zurückgegeben
Reason: No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
)quelle