Vraag Hoe gebruik je nginx om te proxyen naar een host die authenticatie vereist?


Hoe kan ik een nginx proxy_pass-richtlijn instellen die ook HTTP-basisverificatie-informatie bevat die naar de proxyhost wordt verzonden?

Dit is een voorbeeld van de URL waar ik naartoe moet proxyen:

http://username:password@192.168.0.5/export?uuid=1234567890

Het einddoel is om 1 server-huidige bestanden van een andere server toe te staan ​​(degene naar wie we proxiëren) zonder de URI van de proxyserver bloot te leggen. Ik heb nu 90% correct werk van het volgen van de hier gevonden Nginx-configuratie:

http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/

Ik hoef alleen maar de HTTP Basic-authenticatie toe te voegen om naar de proxyserver te verzenden


40
2018-02-03 17:53


oorsprong


@all: Zorg ervoor dat u HTTP Basic-verificatie nodig hebt bij het gebruik van deze oplossing - niet HTTP-verificatiesamenvatting;) Had nogal moeite met het debuggen totdat ik erachter kwam ... stackoverflow.com/questions/9534602/... - SimonSimCity


antwoorden:


Ik heb dit een tijdje geleden geschreven. Bekijk de details hier:

http://shairosenfeld.blogspot.com/2011/03/authorization-header-in-nginx-for.html

Bijvoorbeeld:

 location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://6.6.6.6:80;
    proxy_set_header Authorization "Basic a2luZzppc25ha2Vk";
 }

"a2luZzppc25ha2Vk" is "king: hasnaked" base64 encoded, dus dat zou werken voor

http: // king: isnaked@6.6.6.6

Bekijk blogpost voor meer informatie.


50
2017-12-30 07:31



De link is verbroken - Alex
Link is nu hier: shairosenfeld.blogspot.com/search?q=nginx voor het geval iemand zich afvraagt - ckm
Ik heb iets moeilijker nodig - Ilja
Uw oplossing is niet flexibel genoeg. Het kan erg handig zijn om gebruikersnaam: wachtwoord on the fly te coderen. Ten eerste moet nginx gebruikersnaam: wachtwoord van URL parseren, ten tweede moet nginx deze gegevens coderen en in de juiste header plaatsen. Ik wil geen gecodeerde inloggegevens coderen. - Johnny
Ik krijg "slecht verzoek" wanneer ik het probeer in mijn setup .. enig idee? - Spock


Ik heb dit werken met alvosu's antwoord, maar ik moest het woord "Basic" ingeven in de aanhaling van de base64 string, dus het zag er zo uit:

proxy_set_header Authorization "Basic dGVzdHN0cmluZw==";

18
2018-02-03 21:53



Weet jij hoe je gebruikersnaam: wachtwoord on-the-fly kunt coderen met nginx? Hardcoded-referenties zijn niet flexibel omdat ik de gebruiker wil authenticeren met referenties die door hem zijn opgegeven in de URL. - Johnny
Ik heb ontdekt hoe ik met nginx kan coderen naar base64 wiki.nginx.org/HttpSetMiscModule#set_encode_base64. Dit is nuttiger dan hardcoded inloggegevens. - Johnny
@ Johnny links naar deze documenten zijn nu hier: github.com/openresty/set-misc-nginx-module#set_encode_base64 - Al Dass


Stel proxy_set_header Autorisatie in "USER_AND_PASS", waarbij USER_AND_PASS = base64 (user: pass)


4
2018-02-03 18:01



het sleutelwoord missen Basic. - Jan-Philip Gehrcke