What does fastcgi_keep_conn do?

Hi, I would like nginx to serve all requests of a given TCP connection
the same FCGI server. If a new TCP connection is established, then nginx
would select the next UDS FCGI server in round-robin fashion.

Can this be achieved with NGINX, and if yes, how?

I thought turning on fastcgi_keep_conn on would achieve this goal, but
it is
not what happened. My obervation was that each FCGI server took turn
receiving a new request even if all the requests are from the same TCP

I had:

upstream backend {
server unix:/tmp/fastcgi/socket1 …;
server unix:/tmp/fastcgi/socket2 …;
keepalive 32;

server {

location {
fastcgi_keep_conn on;
fastcgi_pass backend;

Thank you.

Posted at Nginx Forum:

‘Keep connection’ does not mean what you think it means.

That does not tie a client connection to a backend connection. To do
you will need stuff like ip_hash
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash or
more advenced session mechanisms (which are sadly not available in

Read the docs on fastcgi_keep_conn
which says it ensures the FastCGI connection is not close after being
which is the normal way of doing it. Use that in relation with keepalive

That means that connections to the backend will remain open after being
open, so the next time the webserver addresses to them, they won’t need
open a new connection to them.

B. R.

Thank you, that did the trick.

Posted at Nginx Forum: