disable keepalive for Safari:
    https://bugs.webkit.org/show_bug.cgi?id=5760
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index f3b62d9..78c1412 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -783,14 +783,24 @@
             break;
         }
 
-        if (r->keepalive && r->headers_in.msie && r->method == NGX_HTTP_POST) {
+        if (r->keepalive) {
 
-            /*
-             * MSIE may wait for some time if an response for
-             * a POST request was sent over a keepalive connection
-             */
+            if (r->headers_in.msie) {
+                if (r->method == NGX_HTTP_POST) {
+		    /*
+		     * MSIE may wait for some time if an response for
+		     * a POST request was sent over a keepalive connection
+		     */
+		    r->keepalive = 0;
+                }
 
-            r->keepalive = 0;
+            } else if (r->headers_in.safari) {
+                /*
+                 * Safari may send a POST request to a closed keepalive
+                 * connection and stalls for some time
+                 */
+                r->keepalive = 0;
+            }
         }
 
         if (r->headers_in.content_length_n > 0) {
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 9ca19f5..3432b50 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1450,6 +1450,9 @@
         } else if (ngx_strstrn(user_agent, "Chrome/", 7 - 1)) {
             r->headers_in.chrome = 1;
 
+        } else if (ngx_strstrn(user_agent, "Safari/", 7 - 1)) {
+            r->headers_in.safari = 1;
+
         } else if (ngx_strstrn(user_agent, "Konqueror", 9 - 1)) {
             r->headers_in.konqueror = 1;
         }
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index 79ec028..902ec3e 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -220,6 +220,7 @@
     unsigned                          opera:1;
     unsigned                          gecko:1;
     unsigned                          chrome:1;
+    unsigned                          safari:1;
     unsigned                          konqueror:1;
 } ngx_http_headers_in_t;