Help with Keepalive on NGINX

Hi All,

I am struggling to get keepalives to work on Nginx, I believe I have
added the necessary configuration. Can you take a look and suggest where
I may be going wrong or what I am missing?

We have a nginx server that sits in front of a varnish server which sits
in front of the back-end servers

http {

 keepalive_timeout  120;
 keepalive_requests 500;

 upstream varnish_rand {
     keepalive 256;

 server {

     location / {

         proxy_pass   http://varnish_rand;
         proxy_http_version 1.1;



You can see that the nginx server is using HTTP1.1 to communicate with

*varnishtop -i RxProtocol *
list length 1

  9.67 RxProtocol     HTTP/1.1

However there nginx always send a “connection close”

varnishtop -c -i RxHeader -I “Connection”

list length 1

  9.59 RxHeader     Connection: close

Thanks in advance



On Fri, Jul 26, 2013 at 10:33:42AM +0100, Nick T. wrote:

 9.59 RxHeader     Connection: close

That’s because nginx uses “Connection: close” by default,
regardless of a protocol version used. If you want keepalive to
work, you have to instruct nginx to don’t send “Connection:
close” using the proxy_set_header directive.

For more information see documentation at
Module ngx_http_upstream_module.

Maxim D.

Hi Maxim,

Thanks for the reply, a great help. works as expected now :slight_smile:

Have a good weekend