diff --git a/software/webapp/src/main/java/brooklyn/entity/proxy/nginx/NginxController.java b/software/webapp/src/main/java/brooklyn/entity/proxy/nginx/NginxController.java
index e7cb590..c152882 100644
--- a/software/webapp/src/main/java/brooklyn/entity/proxy/nginx/NginxController.java
+++ b/software/webapp/src/main/java/brooklyn/entity/proxy/nginx/NginxController.java
@@ -12,6 +12,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import brooklyn.config.ConfigKey;
 import brooklyn.entity.Entity;
 import brooklyn.entity.Group;
 import brooklyn.entity.basic.Description;
@@ -76,6 +77,15 @@
     public static final BasicConfigKey<Boolean> STICKY =
         new BasicConfigKey<Boolean>(Boolean.class, "nginx.sticky", "whether to use sticky sessions", true);
 
+    @SetFromFlag("stickyVersion")
+    public static final ConfigKey<String> STICKY_VERSION =
+        new BasicConfigKey<String>(String.class, "nginx.sticky.version", 
+                "Version of ngnix-sticky-module to be installed, if required", "1.0");
+    
+    @SetFromFlag("pcreVersion")
+    public static final ConfigKey<String> PCRE_VERSION =
+        new BasicConfigKey<String>(String.class, "pcre.version", "Version of PCRE to be installed, if required", "8.32");
+    
     @SetFromFlag("httpPollPeriod")
     public static final BasicConfigKey<Long> HTTP_POLL_PERIOD =
         new BasicConfigKey<Long>(Long.class, "nginx.sensorpoll.http", "poll period (in milliseconds)", 1000L);
diff --git a/software/webapp/src/main/java/brooklyn/entity/proxy/nginx/NginxSshDriver.java b/software/webapp/src/main/java/brooklyn/entity/proxy/nginx/NginxSshDriver.java
index 8baf0b3..b31d8e8 100644
--- a/software/webapp/src/main/java/brooklyn/entity/proxy/nginx/NginxSshDriver.java
+++ b/software/webapp/src/main/java/brooklyn/entity/proxy/nginx/NginxSshDriver.java
@@ -63,8 +63,9 @@
         
         String nginxUrl = format("http://nginx.org/download/nginx-%s.tar.gz", getVersion());
         String nginxSaveAs = format("nginx-%s.tar.gz", getVersion());
-        String stickyModuleUrl = "http://nginx-sticky-module.googlecode.com/files/nginx-sticky-module-1.0.tar.gz";
-        String stickyModuleSaveAs = "nginx-sticky-module-1.0.tar.gz";
+        String stickyVersion = entity.getConfig(NginxController.STICKY_VERSION);
+        String stickyModuleUrl = format("http://nginx-sticky-module.googlecode.com/files/nginx-sticky-module-%s.tar.gz", stickyVersion);
+        String stickyModuleSaveAs = format("nginx-sticky-module-%s.tar.gz", stickyVersion);
         boolean sticky = ((NginxController) entity).isSticky();
         boolean isMac = getMachine().getOsDetails().isMac();
         ScriptHelper script = newScript(INSTALLING);
@@ -76,9 +77,9 @@
         script.body.append(CommonCommands.installPackage(installPackageFlags, "nginx-prerequisites"));
         script.body.append(CommonCommands.downloadUrlAs(nginxUrl, getEntityVersionLabel("/"), nginxSaveAs));
         if (isMac) {
-            String pcreVersion = "8.32";
+            String pcreVersion = entity.getConfig(NginxController.PCRE_VERSION);
             String pcreUrl = format("ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-%s.tar.gz", pcreVersion);
-            String pcreSaveAs = format("pcre-8.32.tar.gz", pcreVersion);
+            String pcreSaveAs = format("pcre-%s.tar.gz", pcreVersion);
             script.body.append(CommonCommands.downloadUrlAs(pcreUrl, getEntityVersionLabel("/"), pcreSaveAs));
             // Install PCRE
             script.body.append(format("mkdir -p %s/pcre-dist", getInstallDir()));
@@ -106,7 +107,7 @@
                     format(" --prefix=%s/nginx-%s/dist", getInstallDir(), getVersion()) +
                     " --with-http_ssl_module" +
                     (sticky ? format(" --add-module=%s/nginx-%s/src/nginx-sticky-module-1.0 ", getInstallDir(), getVersion()) : "") +
-                    (isMac ? format(" --with-ld-opt=\"-L %s/pcre-dist/lib\"", getInstallDir(), getVersion()) : "") ,
+                    (isMac ? format(" --with-ld-opt=\"-L %s/pcre-dist/lib\"", getInstallDir()) : "") ,
                 "make install");
 
         script.header.prepend("set -x");
