diff -ur nginx-0.6.28.orig/src/http/ngx_http_core_module.c nginx-0.6.28/src/http/ngx_http_core_module.c
--- nginx-0.6.28.orig/src/http/ngx_http_core_module.c	2008-03-10 16:45:41.000000000 +0200
+++ nginx-0.6.28/src/http/ngx_http_core_module.c	2008-04-12 20:18:18.000000000 +0300
@@ -506,6 +506,13 @@
       offsetof(ngx_http_core_loc_conf_t, server_tokens),
       NULL },
 
+    { ngx_string("xar"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+      ngx_conf_set_flag_slot,
+      NGX_HTTP_LOC_CONF_OFFSET,
+      offsetof(ngx_http_core_loc_conf_t, xar),
+      NULL },
+
     { ngx_string("error_page"),
       NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
                         |NGX_CONF_2MORE,
@@ -2719,6 +2726,7 @@
     lcf->log_not_found = NGX_CONF_UNSET;
     lcf->recursive_error_pages = NGX_CONF_UNSET;
     lcf->server_tokens = NGX_CONF_UNSET;
+    lcf->xar = NGX_CONF_UNSET;
     lcf->types_hash_max_size = NGX_CONF_UNSET_UINT;
     lcf->types_hash_bucket_size = NGX_CONF_UNSET_UINT;
 
@@ -2941,6 +2949,7 @@
     ngx_conf_merge_value(conf->recursive_error_pages,
                               prev->recursive_error_pages, 0);
     ngx_conf_merge_value(conf->server_tokens, prev->server_tokens, 1);
+    ngx_conf_merge_value(conf->xar, prev->xar, 1);
 
     ngx_conf_merge_ptr_value(conf->open_file_cache,
                               prev->open_file_cache, NULL);
diff -ur nginx-0.6.28.orig/src/http/ngx_http_core_module.h nginx-0.6.28/src/http/ngx_http_core_module.h
--- nginx-0.6.28.orig/src/http/ngx_http_core_module.h	2007-12-29 18:38:23.000000000 +0200
+++ nginx-0.6.28/src/http/ngx_http_core_module.h	2008-04-12 20:16:29.000000000 +0300
@@ -305,6 +305,7 @@
     ngx_flag_t    log_not_found;           /* log_not_found */
     ngx_flag_t    recursive_error_pages;   /* recursive_error_pages */
     ngx_flag_t    server_tokens;           /* server_tokens */
+    ngx_flag_t    xar;           	   /* X-Accel-Redirect */
 
 #if (NGX_HTTP_GZIP)
     ngx_flag_t    gzip_vary;               /* gzip_vary */
diff -ur nginx-0.6.28.orig/src/http/ngx_http_upstream.c nginx-0.6.28/src/http/ngx_http_upstream.c
--- nginx-0.6.28.orig/src/http/ngx_http_upstream.c	2008-03-05 09:30:44.000000000 +0200
+++ nginx-0.6.28/src/http/ngx_http_upstream.c	2008-04-12 23:52:07.000000000 +0300
@@ -1251,6 +1251,10 @@
 
     if (u->headers_in.x_accel_redirect) {
 
+        clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
+
+	if (clcf->xar) {
+
         ngx_http_upstream_finalize_request(r, u, NGX_DECLINED);
 
         part = &u->headers_in.headers.part;
@@ -1300,6 +1304,7 @@
 
         ngx_http_internal_redirect(r, uri, &args);
         return;
+        }
     }
 
     part = &u->headers_in.headers.part;