How does FastCGI work under the covers?

Hello Everybody,

I have a simple question about the Nginx FastCGI implementation. Let’s
say
that 1,000 web browsers are requesting pages from our server, and we’re
using FastCGI within Nginx.

While the FastCGI specification permits sending little pieces of each
request (“multiplexing” them), my understanding is that most (all?)
implementations don’t do this. Therefore,

(1) does Nginx FastCGI provide exactly one complete HTTP request at a
time?

(2) does Nginx FastCGI want us to respond to that particular HTTP
request
before it gives us the next one?

The reason that I ask is this: If my FastCGI server is high-latency,
I’m
wondering if it can get lots of requests to work on, or if it will have
to
finish one and only then get the next one, and only Nginx knows the
answer
to this question. :slight_smile:

Many thanks for your kind help, and I hope that I didn’t miss the answer
to
this question in my search of the archives.

kgk

Posted at Nginx Forum:

Hello!

On Sun, Jun 30, 2013 at 05:10:23PM -0400, kgk wrote:

(1) does Nginx FastCGI provide exactly one complete HTTP request at a
time?

(2) does Nginx FastCGI want us to respond to that particular HTTP request
before it gives us the next one?

The reason that I ask is this: If my FastCGI server is high-latency, I’m
wondering if it can get lots of requests to work on, or if it will have to
finish one and only then get the next one, and only Nginx knows the answer
to this question. :slight_smile:

FastCGI multiplexing isn’t used by nginx. That is, within a
single connection to a fastcgi application only one request is
sent, and then nginx will wait for a response. More connections
will be opened if there are multiple simulteneous requests.


Maxim D.
http://nginx.org/en/donation.html

Hello Maxim,

Thank you so much for answering my previous questions! Now I have a few
more:

  1. Will Nginx provide a FastCGI request only when it is 100% complete,
    i.e., the browser has provided every necessary byte?

  2. Will Nginx always accept 100% of a FastCGI response and hold it
    inside
    internal buffers (or on disk), and not wait for the client (= web
    browser)?

kgk

Maxim D. Wrote:



nginx mailing list
[email protected]
nginx Info Page

Posted at Nginx Forum:

Hello!

On Mon, Jul 01, 2013 at 11:57:21AM -0400, kgk wrote:

Hello Maxim,

Thank you so much for answering my previous questions! Now I have a few
more:

  1. Will Nginx provide a FastCGI request only when it is 100% complete,
    i.e., the browser has provided every necessary byte?

Yes.

  1. Will Nginx always accept 100% of a FastCGI response and hold it inside
    internal buffers (or on disk), and not wait for the client (= web browser)?

Depends on configuration, see
Module ngx_http_fastcgi_module.


Maxim D.
http://nginx.org/en/donation.html