diff --git filefield.module filefield.module
index b5418f9..5252c2d 100644
--- filefield.module
+++ filefield.module
@@ -617,10 +617,31 @@ function filefield_progress($key) {
       $progress['percentage'] = round(100 * $status['current'] / $status['total']);
     }
   }
-
+  elseif ($implementation == 'nginx') {
+    $status = nginx_progress_fetch($key);
+    if ($status['state'] == 'uploading') {
+      $progress['message'] = t('Uploading... (@current of @total)', array('@current' => format_size($status['received']), '@total' => format_size($status['size'])));
+      $progress['percentage'] = round(100 * $status['received'] / $status['size']);
+    }
+  }
   drupal_json($progress);
 }
 
+function nginx_progress_fetch($key) {
+  $url = url('progress', array('query' => 'X-Progress-ID=' . $key, 'absolute' => TRUE));
+  $response = drupal_http_request($url);
+  $status = array();
+  if (preg_match("/.*\{(.*)\}.*/", $response->data, $matches) ) {
+    $items = explode(',', $matches[1]);
+    foreach ($items as $item) {
+      $array = explode(':', $item);
+      $key = trim($array[0],"' ");      
+      $value = trim($array[1],"' ");
+      $status[$key] = $value;
+    }
+  }
+  return $status;
+}
 /**
  * Determine which upload progress implementation to use, if any available.
  */
@@ -637,6 +658,7 @@ function filefield_progress_implementation() {
     elseif (extension_loaded('apc') && ini_get('apc.rfc1867')) {
       $implementation = 'apc';
     }
+    $implementation = 'nginx';
   }
   return $implementation;
 }
diff --git filefield_widget.inc filefield_widget.inc
index 0c125be..e8bdb42 100644
--- filefield_widget.inc
+++ filefield_widget.inc
@@ -341,6 +341,14 @@ function filefield_widget_process($element, $edit, &$form_state, $form) {
         '#attributes' => array('class' => 'filefield-progress'),
       );
     }
+    elseif ($implementation == 'nginx') {
+      $element['filefield_upload']['#ahah']['path'] .= '/x-progress-id:' . $upload_progress_key;
+      $element['UPLOAD_IDENTIFIER'] = array(
+        '#type' => 'hidden',
+        '#value' => $upload_progress_key,
+        '#attributes' => array('class' => 'filefield-progress'),
+      );
+    }
 
     // Add the upload progress callback.
     $element['filefield_upload']['#ahah']['progress']['type'] = 'bar';
