Problem with proxies, redirections and headers
Gautier DI FOLCO
gautier.difolco at gmail.com
Fri Sep 28 13:16:45 UTC 2012
Hi all,
I have to set up an infrastructure that allows the dynamic management of SCM
repositories (svn/git, creation/destruction, authentication via MySQL,
clone/checkout, pull/update, push/commit).
This is the way a query that I wanted to set up: nginx receives a request,
#1 matches, request goes to daemon authentication (I use Rack
https://github.com/rack/rack/), it ask for an username and a
password (Basic Auth), check the permissions and send the url to execute and
to return to the client via X-Accel-redirect (yet it does nothing but
redirect)
[configuration is below and is called auth.ru], nginx get the request and
match #2, then it forwards to grack (https://github.com/puzzle/grack/) and
will treat all back to the client. Currently my authtification system works
well (i.e. it redirects to the correct url), the daemon grack, when accessed
directly, handles correctly the requests of Git clients, but when I try to
give
them via nginx, the Content-type header returned to the client is
text/plain,
this is not those returned by grack. Here's my setup, I made a mistake but
I do
not see why.
Do you have any idea?
For your help,
In advance,
Thanks.
# nginx.conf
location ~ /(svn|git)/(.*)$ { #1
proxy_pass http://127.0.0.1:8000/$1/$2;
proxy_redirect off;
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_set_header X-Sendfile-Type X-Accel-Redirect;
}
location ~ /_git/(.*) { #2
internal;
proxy_pass http://127.0.0.1:8001/$1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# auth.ru
run lambda { |env|
dir = Rack::Request.new(env).path_info
dir.slice!(0)
dir = '/_' << dir
[200, {"Content-Type" => ".", 'X-Accel-Redirect' => dir}, []]
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20120928/19d70548/attachment.html>
More information about the nginx
mailing list