help with a multi process http server.

Andre Garzia soapdog at mac.com
Mon Jan 22 15:54:49 EST 2007


Dave,

I didn't want to add that burden to the scheduler because I am afraid  
of denial of service, my whole quest in the field of revolution based  
servers is trying to avoid such situations. I need to check if I can  
redirect POST requests... If I can't then I'll need to implement a  
solution like you outlined here at least for POST calls.

If I managed to build such thing, I'll post here on the list.

Cheers
andre

On Jan 22, 2007, at 6:18 PM, Dave Cragg wrote:

> On 22 Jan 2007, at 19:25, Andre Garzia wrote:
>
>> Suppose the scheduler is running 8080 and each server instance in  
>> the pool is running from 8081 onwards. When the client connects to  
>> 8080, the scheduler sends back a redirection response so that the  
>> client refreshes to a different port (of a free instance in the  
>> pool). The problem is that a http client such as a browser will  
>> then request favico and all the links in the html from the same  
>> port for it re-uses data from the connection that yielded that  
>> result to fill missing data in the URL. For example, if you make a  
>> link that goes to /newpage.html, then the server will make it  
>> http://yourserver/newpage.html. If I answered from port 8081, all  
>> links in the page will "inherit" that port and I want all the  
>> connections to come to the scheduler running on a different port.
>>
>> One approach to solve this is to parse all the response and change  
>> all the html responses to include the correct URLs. This is very  
>> boring and slow for we must cope with href, src, link, rel and all  
>> kinds of css includes and stuff. What I hoped to find was some  
>> HTTP header field that would tell like: "hey this server is  
>> acutally running at port bla bla bla" such as:
>>
>> host: localhost:8080
>>
>> despite the fact that that answer came thru 8081. This way the  
>> whole thing would work and maybe we would have a a web server  
>> built with Rev that could see some real world use...
>>
>> Anyone has two cents?
>
> This is very interesting, Andre. I wish I had your energy.
>
> One thought.
>
> If I understand correctly, under this system, the scheduler  
> immediately responds to the client with a redirect to the same url  
> but on a different port. Intead of using a redirect, is it not  
> possible for the scheduler to hand off the request directly to an  
> available process (for example, on localhost:8082), wait for the  
> response, and then the scheduler writes the response directly back  
> to the client? This would preserve the socket details for the client.
>
> This would put an extra burden on the scheduler when it has to  
> write back large quantities of data to simulataneous requests from  
> different clients. But I think it should be possible to slice up  
> the responses so that you only write back to the client sockets in  
> small chunks (say 4096 KB at a time). This should allow  
> simultaneous connections to appear to work simultaneously.
>
> Also, is there not a problem in redirecting clients that have made  
> a POST request? My memory of the http rfc is that redirects only  
> use the GET method. The above idea would get round that problem.
>
> Cheers
> Dave
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution




More information about the use-livecode mailing list