Dynamic proxy_pass

W. Andrew Loe III andrew at andrewloe.com
Sat Aug 2 00:47:03 MSD 2008


Yes, a webserver running on that IP get a request (that looks like it
came from the client) for foo.jpg, but the client will get its request
answered by the server it connected to. It basically lets you combine
webservers to create an ad-hoc cloud storage system.

On Wed, Jul 30, 2008 at 2:17 PM, mike <mike503 at gmail.com> wrote:
> cool!
>
> so http://1.2.3.4/foo.jpg is actually the source file then?
>
> On 7/30/08, W. Andrew Loe III <andrew at andrewloe.com> wrote:
>> For those interested I have a working solution.
>>
>> location /under_the_covers/ {
>>  if ($uri ~* ^/under_the_covers/(.*)/.*$) {
>>    set $other_nginx $1;
>>    rewrite ^/under_the_covers/.*/(.*)$ $1;
>>    proxy_pass http://$other_nginx/$uri;
>>    break;
>>  }
>>  }
>>
>> My client replies with X-Accel-Redirect =
>> /under_the_covers/1.2.3.4/foo.jpg and my other webserver gets the
>> request.
>>
>> On Tue, Jul 29, 2008 at 6:34 PM, W. Andrew Loe III <andrew at andrewloe.com> wrote:
>> > I have a relatively complex setup but I believe nginx has the ability
>> > to do everything I am looking for. I want to proxy requests for files
>> > to different servers using x-accel-redirect.
>> >
>> > A request cycle might look like this:
>> > client => interwebs => nginx1 => mongrel (which does some lifting and
>> > then replies back with x-accel-redirect and a url like
>> > /under_the_covers/10.10.1.2/file.jpg) => nginx1 (at this point the
>> > location directive catch the /under_the_covers and do what I want) =>
>> > some-other-webserver (10.10.1.2) => nginx1 => interwebs => client.
>> >
>> > In psuedo code I want something like:
>> >
>> > location /under_the_covers/(.*) {
>> >  internal;
>> >  proxy_pass http://$1;
>> > }
>> >
>> > I have tried a few methods but I cannot seem to get it correct.
>> >
>> > location /under_the_covers/ {
>> >  rewrite ^/under_the_covers/(.*)/(.*)$ $2;
>> >  proxy_pass http://$1;
>> > }
>> >
>> > I have no trouble if I manually set the host in the proxy pass. So the
>> > mongrel replies with x-accel-redirect = /under_the_covers/file.jpg and
>> > location looks like so:
>> >
>> > location /under_the_covers/(.*) {
>> >   proxy_pass http://10.10.1.2;
>> > }
>> >
>> > http://article.gmane.org/gmane.comp.web.nginx.english/6206/match=proxy_pass
>> >
>> > There is discussion there on using proxy_pass with variables but I
>> > cannot either construct the uri correctly or I can't get the hostname
>> > set from a regular expression.
>> >
>> > Thank you for your time,
>> > -- Andrew
>> >
>>
>>
>
>





More information about the nginx mailing list