diff --git a/http/apache/apache_service.inc b/http/apache/apache_service.inc
index bf5dc21..58a2c2c 100644
--- a/http/apache/apache_service.inc
+++ b/http/apache/apache_service.inc
@@ -62,7 +62,7 @@ class provisionConfig_apache_server extends provisionConfig_http_server {
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_server_config', $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_server_config', $this->data, $this));
   }
 }
 
@@ -73,7 +73,7 @@ class provisionConfig_apache_platform extends provisionConfig_http_platform {
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_dir_config', $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_dir_config', $this->data, $this));
   }
 }
 
@@ -84,7 +84,7 @@ class provisionConfig_apache_site extends provisionConfig_http_site {
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_vhost_config', $this->uri, $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_vhost_config', $this->uri, $this->data, $this));
   }
 }
 
diff --git a/http/apache_ssl/apache_ssl_service.inc b/http/apache_ssl/apache_ssl_service.inc
index 8dcac6e..c1fcc7e 100644
--- a/http/apache_ssl/apache_ssl_service.inc
+++ b/http/apache_ssl/apache_ssl_service.inc
@@ -77,7 +77,7 @@ class provisionConfig_apache_ssl_server extends provisionConfig_http_ssl_server
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_server_config', $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_server_config', $this->data, $this));
   }
 }
 
@@ -91,6 +91,6 @@ class provisionConfig_apache_ssl_site extends provisionConfig_http_ssl_site {
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_vhost_config', $this->uri, $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_apache_vhost_config', $this->uri, $this->data, $this));
   }
 }
diff --git a/http/nginx/nginx_service.inc b/http/nginx/nginx_service.inc
index a981449..ca77555 100644
--- a/http/nginx/nginx_service.inc
+++ b/http/nginx/nginx_service.inc
@@ -65,7 +65,7 @@ class provisionConfig_nginx_server extends provisionConfig_http_server {
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_nginx_server_config', $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_nginx_server_config', $this->data, $this));
   }
 }
 
@@ -76,7 +76,7 @@ class provisionConfig_nginx_site extends provisionConfig_http_site {
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_nginx_vhost_config', $this->uri, $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_nginx_vhost_config', $this->uri, $this->data, $this));
   }
 }
 
diff --git a/http/nginx_ssl/nginx_ssl_service.inc b/http/nginx_ssl/nginx_ssl_service.inc
index 0d38f50..c3281f2 100644
--- a/http/nginx_ssl/nginx_ssl_service.inc
+++ b/http/nginx_ssl/nginx_ssl_service.inc
@@ -81,7 +81,7 @@ class provisionConfig_nginx_ssl_server extends provisionConfig_http_ssl_server {
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_nginx_server_config', $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_nginx_server_config', $this->data, $this));
   }
 }
 
@@ -95,6 +95,6 @@ class provisionConfig_nginx_ssl_site extends provisionConfig_http_ssl_site {
   function process() {
     parent::process();
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_nginx_vhost_config', $this->uri, $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_nginx_vhost_config', $this->uri, $this->data, $this));
   }
 }
diff --git a/platform/provision_drupal.drush.inc b/platform/provision_drupal.drush.inc
index 8ebb7b1..301f8f7 100644
--- a/platform/provision_drupal.drush.inc
+++ b/platform/provision_drupal.drush.inc
@@ -143,7 +143,7 @@ class provisionConfig_drupal_settings extends provisionConfig {
     }
 
     $this->data['extra_config'] = "# Extra configuration from modules:\n";
-    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_drupal_config', d()->uri, $this->data));
+    $this->data['extra_config'] .= join("\n", drush_command_invoke_all('provision_drupal_config', d()->uri, $this->data, $this));
 
     $this->group = $this->platform->server->web_group;
   }
diff --git a/provision.api.php b/provision.api.php
index da24efd..26fb9f4 100644
--- a/provision.api.php
+++ b/provision.api.php
@@ -31,13 +31,15 @@ function drush_hook_provision_services() {
  *   URI for the site.
  * @param $data
  *   Associative array of data from provisionConfig_drupal_settings::data.
+ * @param $config
+ *   The whole configuration object for more complex coditions and references
  *
  * @return
  *   Lines to add to the site's settings.php file.
  *
  * @see provisionConfig_drupal_settings
  */
-function drush_hook_provision_drupal_config($uri, $data) {
+function drush_hook_provision_drupal_config($uri, $data, $config) {
   return '$conf[\'reverse_proxy\'] = TRUE;';
 }
 
@@ -48,13 +50,15 @@ function drush_hook_provision_drupal_config($uri, $data) {
  *
  * @param $data
  *   Associative array of data from provisionConfig_apache_server::data.
+ * @param $config
+ *   The whole configuration object for more complex coditions and references
  *
  * @return
  *   Lines to add to the configuration file.
  *
  * @see provisionConfig_apache_server
  */
-function drush_hook_provision_apache_server_config($data) {
+function drush_hook_provision_apache_server_config($data, $config) {
 }
 
 /**
@@ -64,13 +68,17 @@ function drush_hook_provision_apache_server_config($data) {
  *
  * @param $data
  *   Associative array of data from provisionConfig_apache_platform::data.
+ * @param $config
+ *   The whole configuration object for more complex coditions and references
  *
  * @return
  *   Lines to add to the configuration file.
+ * @param $confg
+ *   The whole configuration object for more complex coditions and references
  *
  * @see provisionConfig_apache_platform
  */
-function drush_hook_provision_apache_dir_config($data) {
+function drush_hook_provision_apache_dir_config($data, $config) {
 }
 
 /**
@@ -82,11 +90,53 @@ function drush_hook_provision_apache_dir_config($data) {
  *   URI for the site.
  * @param $data
  *   Associative array of data from provisionConfig_apache_site::data.
+ * @param $config
+ *   The whole configuration object for more complex coditions and references
  *
  * @return
  *   Lines to add to the configuration file.
  *
  * @see provisionConfig_apache_site
  */
-function drush_hook_provision_apache_vhost_config($uri, $data) {
+function drush_hook_provision_apache_vhost_config($uri, $data, $config) {
 }
+
+/**
+ * Append Nginx configuration to site vhost configuration.
+ * 
+ * To use templating, return an include statement for the template.
+ *
+ * @param $uri
+ *   URI for the site.
+ * @param $data
+ *   Associative array of data from provisionConfig_nginx_site::data.
+ * @param $config
+ *   The whole configuration object for more complex coditions and references
+ *
+ * @return
+ *   Lines to add to the configuration file.
+ *
+ * @see provisionConfig_apache_site
+ */
+function drush_hook_provision_nginx_vhost_config($uri, $data, $config) {
+}
+
+/**
+ * Append Nginx configuration to server configuration.
+ * 
+ * To use templating, return an include statement for the template.
+ *
+ * @param $data
+ *   Associative array of data from provisionConfig_nginx_server::data.
+ * @param $config
+ *   The whole configuration object for more complex coditions and references
+ *
+ * @return
+ *   Lines to add to the configuration file.
+ *
+ * @see provisionConfig_apache_server
+ */
+function drush_hook_provision_apache_server_config($data, $config) {
+}
+
+
