vagrant-reverse-proxy 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fc6bfbd2be5d73661529df41828a6f2bdbfacdc3
4
- data.tar.gz: e3aad94f72a27c83b4c9cf4838109680ebb2d1fc
3
+ metadata.gz: 6b161ccdfa9f23fc816ef78e026e3612473a5c2d
4
+ data.tar.gz: 6e1f550ea1d7209e405937b4eefe4dacd702f344
5
5
  SHA512:
6
- metadata.gz: 444eb3425dcea8535e3ee9bdbb9e9b305438f209829c3c90c317e7315188612ee210b0b1d0519d0e62357d5925c52bed4a8fb7970e3dd7161aa6a98c5d916802
7
- data.tar.gz: 047e6b869a09fb2a68a59227243943eb1850c48924a022027f93e34461c8b1e5ca7b446d0f8fea7dfff6a274abc450b1aaf2809a7f8a992f50b6e91ae2d1057d
6
+ metadata.gz: b4f5e4f857f7c261fe576c96ceab51fa8ebc28bdc76cc20a73b12c90ea6f299de4185f07edd24781b8c67daf693ad34a74a9f865269d46f0e950ea96960dc6b5
7
+ data.tar.gz: 0b4259a235e8e93e56f2d81410464686b456e51a76593b4d4662799823d77804281cdd6379486fccea05cb7bb993f7a3c86980d85c49298d32b6fda34478fd51
data/README.md CHANGED
@@ -107,6 +107,36 @@ to be executed:
107
107
 
108
108
  config.reverse_proxy.nginx_reload_command = 'sudo service nginx reload'
109
109
 
110
+ ### Adding custom NGINX configuration to your proxy
111
+
112
+ Sometimes the standard settings are not enough, and you'll need
113
+ additional custom configuration in a proxy block. A good example is
114
+ when you want to support websockets; in order to do that, you need to
115
+ force NGINX to use HTTP/1.1 and pass on any `upgrade` headers to the
116
+ downstream server.
117
+
118
+ To do this, you can add a global setting that will affect all vhosts:
119
+
120
+ config.reverse_proxy.nginx_extra_config = <<EOF
121
+ proxy_http_version 1.1;
122
+ proxy_set_header Upgrade $http_upgrade;
123
+ proxy_set_header Connection "upgrade";
124
+ EOF
125
+
126
+ If you have a particular setting that applies to a single vhost only,
127
+ you can set a similar property in the vhost hash:
128
+
129
+ config.reverse_proxy.vhosts = {
130
+ "bar" => {:host => "bar.test",
131
+ :nginx_extra_config => "proxy_http_version 1.1;\nproxy_set_header Upgrade $http_upgrade;\n"}
132
+ }
133
+
134
+ These "extra configs" will be appended to the configuration, with the
135
+ vhost-specific one last. Of course, for more complicated
136
+ configuration you can just use the NGINX `include` directive to load
137
+ an extra file. **NOTE:** Remember that all NGINX config directives
138
+ require a trailing semicolon, or the config will be invalid!
139
+
110
140
  ## Adding proxy support to your application
111
141
 
112
142
  This plugin will instruct NGINX to pass the following headers to your
@@ -136,6 +166,7 @@ add a bit of custom code there if you need to override the base URL.
136
166
 
137
167
  ## Changelog
138
168
 
169
+ - 0.5.0 Add support for `nginx_extra_config` setting (Fixes ticket #8).
139
170
  - 0.4.0 Add support for `vagrant reload`, add support for host-based instead
140
171
  of location-based dispatching (both thanks to Sam Stevens). NOTE: This is a
141
172
  backwards incompatible change: the default name of the config file has
@@ -93,7 +93,7 @@ module VagrantPlugins
93
93
  end
94
94
  ip = get_ip_address(machine)
95
95
  vhosts.collect do |path, vhost|
96
- # Rewrites are matches literally by nginx, which means
96
+ # Rewrites are matched literally by nginx, which means
97
97
  # http://host:80/... will NOT match http://host/...!
98
98
  port_suffix = vhost[:port] == 80 ? '' : ":#{vhost[:port]}"
99
99
  <<EOF
@@ -108,6 +108,9 @@ location /#{path}/ {
108
108
 
109
109
  proxy_pass http://#{ip}#{port_suffix}/;
110
110
  proxy_redirect http://#{vhost[:host]}#{port_suffix}/ /#{path}/;
111
+
112
+ #{vhost[:nginx_extra_config]}
113
+ #{machine.config.reverse_proxy.nginx_extra_config}
111
114
  }
112
115
  EOF
113
116
  end.join("\n")
@@ -122,7 +125,7 @@ EOF
122
125
  end
123
126
  ip = get_ip_address(machine)
124
127
  vhosts.collect do |path, vhost|
125
- # Rewrites are matches literally by nginx, which means
128
+ # Rewrites are matched literally by nginx, which means
126
129
  # http://host:80/... will NOT match http://host/...!
127
130
  port_suffix = vhost[:port] == 80 ? '' : ":#{vhost[:port]}"
128
131
  <<EOF
@@ -140,7 +143,11 @@ server {
140
143
  proxy_set_header X-Forwarded-Port $server_port;
141
144
  proxy_set_header X-Real-IP $remote_addr;
142
145
  proxy_set_header X-Forwarded-Proto $scheme;
146
+
143
147
  proxy_pass http://#{ip}#{port_suffix}/;
148
+
149
+ #{vhost[:nginx_extra_config]}
150
+ #{machine.config.reverse_proxy.nginx_extra_config}
144
151
  }
145
152
  }
146
153
  EOF
@@ -2,7 +2,7 @@ module VagrantPlugins
2
2
  module ReverseProxy
3
3
  class Plugin
4
4
  class Config < Vagrant.plugin(2, :config)
5
- attr_accessor :enabled, :vhosts, :nginx_locations_config_file, :nginx_servers_config_file, :nginx_reload_command
5
+ attr_accessor :enabled, :vhosts, :nginx_locations_config_file, :nginx_servers_config_file, :nginx_reload_command, :nginx_extra_config
6
6
  alias_method :enabled?, :enabled
7
7
 
8
8
  def initialize
@@ -11,6 +11,7 @@ module VagrantPlugins
11
11
  @nginx_locations_config_file = UNSET_VALUE
12
12
  @nginx_servers_config_file = UNSET_VALUE
13
13
  @nginx_reload_command = UNSET_VALUE
14
+ @nginx_extra_config = UNSET_VALUE
14
15
  end
15
16
 
16
17
  def finalize!
@@ -19,19 +20,23 @@ module VagrantPlugins
19
20
  @vhosts = nil
20
21
  elsif @vhosts.is_a?(Array)
21
22
  # Convert to canonical hash form of
22
- # {path => {:host => name, :port => num}}
23
+ # {path => {:host => name, :port => num, :nginx_extra_config => str}}
23
24
  vhosts_hash = {}
24
- @vhosts.each {|entry| vhosts_hash[entry] = {:host => entry, :port => 80} }
25
+ @vhosts.each {|entry| vhosts_hash[entry] = {:host => entry, :port => 80, :nginx_extra_config => ""} }
25
26
  @vhosts = vhosts_hash
26
27
  elsif @vhosts.is_a?(Hash)
27
28
  @vhosts.each do |key, value|
28
29
  if (value.is_a?(String))
29
- @vhosts[key] = {:host => value, :port => 80}
30
+ @vhosts[key] = {:host => value, :port => 80, :nginx_extra_config => ""}
30
31
  else
31
32
  value[:port] ||= 80
33
+ value[:nginx_extra_config] ||= ""
32
34
  end
33
35
  end
34
36
  end
37
+ if @nginx_extra_config == UNSET_VALUE
38
+ @nginx_extra_config = nil
39
+ end
35
40
  if @nginx_locations_config_file == UNSET_VALUE
36
41
  @nginx_locations_config_file = '/etc/nginx/vagrant-proxy-config-locations'
37
42
  end
@@ -73,6 +78,10 @@ module VagrantPlugins
73
78
  errors << 'vhosts must be an array of hostnames, a string=>string hash or nil'
74
79
  end
75
80
 
81
+ unless @nginx_extra_config.instance_of?(String) || @nginx_extra_config == nil || @nginx_extra_config == UNSET_VALUE
82
+ errors << 'nginx_extra_config must be a string'
83
+ end
84
+
76
85
  unless @nginx_locations_config_file.instance_of?(String) || @nginx_locations_config_file == nil || @nginx_locations_config_file == UNSET_VALUE
77
86
  errors << 'nginx_locations_config_file must be a string'
78
87
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ReverseProxy
3
- VERSION = "0.4.0"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-reverse-proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Bex
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-09 00:00:00.000000000 Z
11
+ date: 2017-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler