Dynamic proxy_pass

W. Andrew Loe III andrew at andrewloe.com
Wed Jul 30 21:23:17 MSD 2008


I'm note sure how this helps me. I need to extract my host parameter
out of my request's path
(/under_the_covers/host_I_want_to_pass_to/path) and not out of the
$host variable (or maybe I am missing something?).

On Tue, Jul 29, 2008 at 6:58 PM, 张立冰 <zhang.libing at gmail.com> wrote:
> Here is some code maybe will help you...:)
>
>             if ($host ~* (.+)\.(.*)\.91\.com(.*))
>             {
>                  set $dir_a $1;
>                  set $dir_b $2;
>
>                  rewrite ^(.*)$ /activity/$dir_b/$dir_a$1 last;
>             }
>
>
>             location /
>             {
>                 proxy_pass      http://127.0.0.1:8080;
>             }
>
>
> On Wed, Jul 30, 2008 at 9:34 AM, 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
>>
>
>
>
> --
> The time you enjoy weasting is not weasted time!
>


More information about the nginx mailing list