Browse Source

Add alias support

Lee Boynton 11 years ago
parent
commit
1d50d9ea05

+ 6 - 2
manifests/resource/location.pp

@@ -12,6 +12,7 @@
 #                            with nginx::resource::upstream
 #   [*proxy_read_timeout*] - Override the default the proxy read timeout value of 90 seconds
 #   [*ssl*]                - Indicates whether to setup SSL bindings for this location.
+#   [*location_alias*]     - Path to be used as basis for serving requests for this location
 #   [*option*]             - Reserved for future use
 #
 # Actions:
@@ -34,6 +35,7 @@ define nginx::resource::location(
   $proxy              = undef,
   $proxy_read_timeout = $nginx::params::nx_proxy_read_timeout,
   $ssl                = false,
+  $location_alias     = undef,
   $option             = undef,
   $location
 ) {
@@ -53,6 +55,8 @@ define nginx::resource::location(
   # Use proxy template if $proxy is defined, otherwise use directory template.
   if ($proxy != undef) {
     $content_real = template('nginx/vhost/vhost_location_proxy.erb')
+  } elsif ($location_alias != undef) {
+    $content_real = template('nginx/vhost/vhost_location_alias.erb')
   } else {
     $content_real = template('nginx/vhost/vhost_location_directory.erb')
   }
@@ -61,8 +65,8 @@ define nginx::resource::location(
   if ($vhost == undef) {
     fail('Cannot create a location reference without attaching to a virtual host')
   }
-  if (($www_root == undef) and ($proxy == undef)) {
-    fail('Cannot create a location reference without a www_root or proxy defined')
+  if (($www_root == undef) and ($proxy == undef) and ($location_alias == undef)) {
+    fail('Cannot create a location reference without a www_root, proxy or location_alias defined')
   }
   if (($www_root != undef) and ($proxy != undef)) {
     fail('Cannot define both directory and proxy in a virtual host')

+ 3 - 0
templates/vhost/vhost_location_alias.erb

@@ -0,0 +1,3 @@
+  location <%= location %> {
+    alias  <%= location_alias %>;
+  }

+ 8 - 0
tests/location_alias.pp

@@ -0,0 +1,8 @@
+include nginx
+
+nginx::resource::location { 'www.test.com-alias':
+    ensure         => present,
+    location       => '/some/url',
+    location_alias => '/new/url/',
+    vhost          => 'www.test.com',
+}