/ Zope / Apsis / Pound Mailing List / Archive / 2007 / 2007-05 / X-Reproxy-Url patch for Pound

[ << ] [ >> ]

[ Re: [Pound Mailing List] HTTP Method based ... ] [ XMLRPC Problems With Pound 2.3-1 / ... ]

X-Reproxy-Url patch for Pound
Nathan Schmidt <nathan(at)pbwiki.com>
2007-05-02 22:33:14 [ FULL ]
Hi Robert,

We use Pound here at PBwiki for our frontend traffic directing, SSL,  
and rewrite. Since we use MogileFS as our backing store it could be  
useful for us to have support for Perlbal's reproxy feature, which  
allows the client to specify an internal url (never shown to end  
users) which houses the document body. In this case the application  
layer would handle permissions, quota, and logging then feed the  
header "X-Reproxy-Url: http://10.0.0.31/ 
dev3/0/023/683/0023683057.fid" and an empty body back to Pound. Pound  
then opens a new connection to 10.0.0.31, instead of the application  
layer having to do that passthrough itself. This frees up Apache to  
do other expensive application-level things instead of spoon-feeding  
to modems across the planet.

The linked patch is more a proof-of-concept than production-grade  
yet. I wanted to post it now to ask your thoughts about the method  
and whether you'd consider adding this to the main codebase once it  
is more mature (and configurable).

Thanks for making Pound, it's been a great help for us.

Regards,
-Nathan Schmidt / CTO, PBwiki

Patch hosted at: http://poundpatch.pbwiki.com/

Re: [Pound Mailing List] X-Reproxy-Url patch for Pound
Ted Dunning <tdunning(at)veoh.com>
2007-05-02 23:04:04 [ FULL ]
So you are essentially implementing a special case redirect within pound
rather than within the browser or within the application?

The benefits would be greater application isolation via the abstraction
layer provided by pound as well as putatively higher throughput because you
are doing less proxying?

On 5/2/07 1:33 PM, "Nathan Schmidt" <nathan(at)pbwiki.com> wrote:
[...]

Re: [Pound Mailing List] X-Reproxy-Url patch for Pound
Nathan Schmidt <nathan(at)pbwiki.com>
2007-05-02 23:49:40 [ FULL ]
That's correct.

We don't expose the 10.0.0.x address space or internal url to the  
outside world since our user's files are stored in a sequential  
integer (thus guessable) namespace. A real-world example we have  
lately is a Flash game on a user's wiki which has become quite  
popular in Sweden and Norway, so we have a lot of people accessing a  
~2Mb file over a mix of fast and slow connections.

Right now that 2Mb of data goes from the file storage machines to the  
appserver to the Pound proxy to the client. We'd rather free up  
Apache to move on to the next interesting request (such as rendering  
a wiki page or processing an edit) and let Pound take care of just  
trickling out the static data.

We need the application layer to be involved for this otherwise  
uninteresting static file because we have a great deal of non-public  
user data which can only be served once the session/auth phase is  
complete. We also allow users to make their data private or public at  
arbitrary times, and so we can't do a great deal of upstream caching  
of currently public data.


The reproxy idea is from Brad Fitzpatrick, who wrote MogileFS and  
Perlbal.

http://www.usenix.org/events/lisa04/tech/talks/livejournal.pdf
(see  
page 48)

We'd switch to Perlbal as the proxy role but Pound is otherwise  
meeting our needs nicely and has ended up being quite fast on our  
commodity hardware.

-n

On May 2, 2007, at 2:04 PM, Ted Dunning wrote:
[...][...][...]

Re: [Pound Mailing List] X-Reproxy-Url patch for Pound
Matt Mullenweg <m(at)mullenweg.com>
2007-05-03 01:35:58 [ FULL ]
Nathan Schmidt wrote:[...]

We are in exactly the same boat. Thanks for putting this out there.[...]

MailBoxer