Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

How can I setup an nginx proxy_pass directive that will also include HTTP Basic authentication information sent to the proxy host?

This is an example of the URL I need to proxy to:

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

The end goal is to allow 1 server present files from another server (the one we're proxying to) without exposing the URI of the proxy server. I have this working 90% correct now from following the Nginx config found here:

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

I just need to add in the HTTP Basic authentication to send to the proxy server

share|improve this question
    
@all: Be sure you need HTTP Basic authentication when using this solution - not HTTP Digest Authentication ;) Had quite a hard time debugging around until I figured it out ... stackoverflow.com/questions/9534602/… –  SimonSimCity Jun 6 '13 at 9:27

3 Answers 3

I did a writeup on this a while ago. See the details here:

http://shairosenfeld.com/blog/index.php/2011/03/authorization-header-in-nginx-for-proxying-to-basic-auth-backend/

For example:

 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:isnaked" base64 encoded, so that would work for

http://king:isnaked@6.6.6.6

Feel free to check out blog post for more details.

share|improve this answer
    
The link is broken –  Alex Jul 26 '13 at 6:30
    
Link is now here: shairosenfeld.blogspot.com/search?q=nginx in case anyone is wondering –  ckm Oct 22 at 22:25
up vote 6 down vote accepted

I got this working with alvosu's answer but I had to enter the word "Basic" inside the quotation of the base64 string so it looked like this:

proxy_set_header Authorization "Basic dGVzdHN0cmluZw==";
share|improve this answer

Set proxy_set_header Authorization "USER_AND_PASS", where USER_AND_PASS = base64(user:pass)

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.