IIS + Apache + Mongrel: Problem with big data submit form

Hi all,

I deployed a Rails application on a Windows Server 2003 machine as
follows:

  • I created two instances of Mongrel at ports 4001, 4002 to serve the
    application

  • I set up an Apache instance at port 8080 for balancing load for the
    two Mongrels => So I can access my website at URL http://mywebsite:8080/

  • I want to allow users access my website without typing port 8080 in
    the URL. However, the server already runs IIS for several other
    web-sites at default port 80. Therefore, I used ISAPI Rewrite to forward
    requests from IIS (at port 80) to the Apache (and therefore towards the
    Mongrels) => I can access the website at URL http://mywebsite/

(To do these steps, I followed the guide in book Deploying Rails
Application - Pragmatic Bookshelf)

Everything seems to work fine until I find out the following problem:

In my application, the user register form page allows user to upload
his/her avatar. But whenever the file size is bigger than ~30KB, the
browser keeps waiting for response from the server until getting timeout
error.

This error also occurs in any submitting form with a little big posted
data.

  • Looking at the Apache error log file, I got the following error:

[error] proxy: pass request body failed to 127.0.0.1:4001

=> Apache seems to fail to forward request to Mongrel instance

  • Looking at the Mongrel log file, I got the following error:

Error reading HTTP body: #<RuntimeError: Socket read returned
insufficient data

=> Mongrel seems not to receive fully the data whose length specified in
Content-Length attribute in the request header.

One special thing is that this error just happens when I access the
web-site via IIS, i.e., http://mywebsite. This does not happen when I
try directly with Apache at http://mywebsite:8080 or Mongrel at
http://mywebsite:4001/(4002)

So I think there may be something wrong at the point of forwarding
requests from IIS to Apache using ISAPI Rewrite, maybe related to max
request length or something. But I totally get stuck at that so far.

Please help if you have any suggestion to solve this problem.

Thank you!

Best regards,

.Viet Trung.