Index: Rakefile =================================================================== --- Rakefile (revision 291) +++ Rakefile (working copy) @@ -1,7 +1,7 @@ require 'rubygems' require 'echoe' -Echoe.new('nginx_config_generator', '1.0') do |p| +Echoe.new('nginx_config_generator', '1.1.1') do |p| p.rubyforge_name = 'err' p.author = 'Chris Wanstrath' p.email = 'chris@ozmm.org' Index: lib/config.yml.example =================================================================== --- lib/config.yml.example (revision 291) +++ lib/config.yml.example (working copy) @@ -47,6 +47,11 @@ auth_file: /home/builder/conf/htpasswd root: /home/builder/site + test: + server_name: www.test.famupdate.com + always_www: true + root: /home/builder/site + ssl_sites: errtheblog: # ssl configuration @@ -60,10 +65,10 @@ - 127.0.0.1:8000 - 127.0.0.1:8001 no_www: true + server_name: .errtheblog.com # Just strings that get spit out as rewrites rewrites: - ^/feed/feedburner http://feeds.feedburner.com/errtheblog - ^/feed/atom.xml http://feeds.feedburner.com/errtheblog # Which root to use. You can add a custom one here, too. root: rails - Index: lib/nginx_config_generator.rb =================================================================== --- lib/nginx_config_generator.rb (revision 291) +++ lib/nginx_config_generator.rb (working copy) @@ -16,7 +16,11 @@ overwrite = !(%w(-y -o -f --force --overwrite) & ARGV).empty? -config = YAML.load(ERB.new(env_in || ARGV.shift || 'config.yml').result) +config = YAML.load( + ERB.new( + File.read(env_in || ARGV.shift || 'config.yml') + ).result + ) template = file:'nginx.erb' if File.exists?(out_file = env_out || ARGV.shift || 'nginx.conf') && !overwrite Index: lib/nginx.erb =================================================================== --- lib/nginx.erb (revision 291) +++ lib/nginx.erb (working copy) @@ -54,27 +54,27 @@ # you need one of these blocks for each cluster # and each one needs its own name to refer to it later. <% config['sites'].each do |name, site| %> -<% next unless site['upstream'] %> + <% next unless site['upstream'] %> upstream <%= name %> { -<% Array(site['upstream'] || site['upstreams']).each do |server| %> + <% Array(site['upstream'] || site['upstreams']).each do |server| %> server <%= server %>; -<% end %> + <% end %> } <% end %> <% %w(sites ssl_sites).each do |site_type| %> - -<% config[site_type].each do |name, site| %> + + <% config[site_type].each do |name, site| %> # the server directive is nginx's virtual host directive. server { -<% if site['ssl'] %> + <% if site['ssl'] %> -<% if site['listen'] %> + <% if site['listen'] %> listen <%= site['listen'] %>; -<% else %> + <% else %> listen 443; -<% end %> + <% end %> ssl on; # path to your certificate @@ -83,7 +83,7 @@ # path to your ssl key ssl_certificate_key <%= site['ssl']['key'] %>; -<% else %> + <% else %> # port to listen on. Can also be set to an IP:PORT listen 80; @@ -91,7 +91,7 @@ # sets the domain[s] that this vhost server requests for server_name <%= site['server_name'] %>; -<% end %> + <% end %> # doc root root <%= (config['root'][ site['root'] || 'default' ] || site['root']) % name %>; @@ -110,29 +110,29 @@ break; } -<% if site['no_www'] %> + <% if site['no_www'] %> if ($host ~* "www") { rewrite ^(.*)$ http://<%= site['server_name'].split.first %>$1 permanent; break; } -<% end %> + <% end %> -<% if site['always_www'] %> + <% if site['always_www'] %> if ($host != "www.<%= site['server_name'].split.first %>") { rewrite ^(.*)$ http://www.<%= site['server_name'].split.first %>$1 permanent; break; } -<% end %> + <% end %> location / { -<% Array(site['rewrite'] || site['rewrites']).each do |rewrite| %> + <% Array(site['rewrite'] || site['rewrites']).each do |rewrite| %> rewrite <%= rewrite %> break; -<% end %> + <% end %> -<% if site['auth_file'] %> + <% if site['auth_file'] %> auth_basic "<%= name %> requires credentials."; auth_basic_user_file <%= site['auth_file'] %>; -<% end %> + <% end %> # needed to forward user's IP address to rails proxy_set_header X-Real-IP $remote_addr; @@ -142,10 +142,10 @@ proxy_set_header Host $http_host; proxy_redirect false; proxy_max_temp_file_size 0; -<% if site['ssl'] %> + <% if site['ssl'] %> # set X-FORWARDED_PROTO so ssl_requirement plugin works proxy_set_header X-FORWARDED_PROTO https; -<% end %> + <% end %> # check for index.html for directory index # if its there on the filesystem then rewite @@ -166,12 +166,12 @@ rewrite (.*) $1.html break; } -<% if site['upstream'] %> + <% if site['upstream'] %> if (!-f $request_filename) { proxy_pass http://<%= name %>; break; } -<% end %> + <% end %> } error_page 500 502 503 504 /50x.html; @@ -179,5 +179,6 @@ root html; } } + <% end %> <% end %> }