Skip to content
This repository has been archived by the owner on Feb 1, 2022. It is now read-only.

Added multiple rewrites support (with optional conditions) #6

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions manifests/resource/vhost.pp
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,9 @@
# options like log format to the end.
# [*error_log*] - Where to write error log. May add additional
# options like error level to the end.
# [*passenger_cgi_param*] - Allows one to define additional CGI environment
# [*passenger_cgi_param*] - Allows one to define additional CGI environment
# variables to pass to the backend application
# [*rewrites*] - Rewrite rules for the server
# Actions:
#
# Requires:
Expand Down Expand Up @@ -136,13 +137,15 @@
$error_log = undef,
$passenger_cgi_param = undef,
$use_default_location = true,
$rewrites = {},
) {

validate_array($location_allow)
validate_array($location_deny)
validate_array($proxy_set_header)
validate_array($index_files)
validate_array($server_name)
validate_hash($rewrites)

File {
ensure => $ensure ? {
Expand Down Expand Up @@ -197,7 +200,7 @@
if ($ssl == true) and ($ssl_port == $listen_port) {
$ssl_only = true
}

if $use_default_location == true {
# Create the default location reference for the vHost
nginx::resource::location {"${name}-default":
Expand Down
12 changes: 11 additions & 1 deletion templates/vhost/vhost_header.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@ server {
listen [<%= @ipv6_listen_ip %>]:<%= @ipv6_listen_port %> <% if @ipv6_listen_options %><%= @ipv6_listen_options %><% end %> ipv6only=on;
<% end %>
server_name <%= @rewrite_www_to_non_www ? @name.gsub(/^www\./, '') : @server_name.join(" ") %>;
<%- if (defined? @rewrites) %>
<% @rewrites.each do |i, rewrite| %>
<% if (rewrite['when'] && !rewrite['when'].empty?) %>
if (<%= rewrite['when'] %>){
rewrite "<%= rewrite['regex'] %>" <%= rewrite['target'] %>;
}
<% else %>
rewrite <%= rewrite['regex'] %> <%= rewrite['target'] %>;
<% end %>
<% end %>
<% end -%>
<% if defined? @auth_basic -%>
auth_basic "<%= @auth_basic %>";
<% end -%>
Expand Down Expand Up @@ -34,4 +45,3 @@ server {

access_log <%= @access_log_real %>;
error_log <%= @error_log_real %>;

14 changes: 12 additions & 2 deletions templates/vhost/vhost_ssl_header.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ server {
<% end %>
server_name <%= @rewrite_www_to_non_www ? @name.gsub(/^www\./, '') : @server_name.join(" ") %>;

<%- if (defined? @rewrites) %>
<% @rewrites.each do |i, rewrite| %>
<% if (rewrite['when'] && !rewrite['when'].empty?) %>
if (<%= rewrite['when'] %>){
rewrite "<%= rewrite['regex'] %>" <%= rewrite['target'] %>;
}
<% else %>
rewrite <%= rewrite['regex'] %> <%= rewrite['target'] %>;
<% end %>
<% end %>
<% end -%>

ssl on;

ssl_certificate <%= scope.lookupvar('nginx::params::nx_conf_dir') %>/<%= @name.gsub(' ', '_') %>.crt;
Expand All @@ -30,5 +42,3 @@ server {
<% if @passenger_cgi_param -%><% @passenger_cgi_param.each do |key,value| -%>
passenger_set_cgi_param <%= key %> <%= value %>;
<% end -%><% end -%>