vagrant-reverse-proxy 0.1.0 → 0.2.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37af02ecaff09d53c0bf6b227f8739ef4e9b6f24
|
4
|
+
data.tar.gz: 510a0c70893fa0571c93f8646072bbd9d616b040
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6293d0ed3a1e1d71d916b940afd676c682b9c58440581e90e918be72ae3a3ef29b5d4f478f3448da9065841152bf91437a24e6ec6dbd5a03aee9e7cb83445eb
|
7
|
+
data.tar.gz: 6aa66013e96de2139073c52d6b1552ef3532a0548aa86ed76dc34e858d87d2ed29db2e7af96c1b3a590f25f523edc1053f15e289faf9b02445e1fc6ce2b8894a
|
data/README.md
CHANGED
@@ -60,6 +60,19 @@ set that up, you can override the `vhosts` option:
|
|
60
60
|
This will proxy `http://localhost/foo.test` and
|
61
61
|
`http://localhost/bar.test` to this VM, with a matching `Host` header.
|
62
62
|
|
63
|
+
If you want to customize the vhost path, you can use a hash instead of
|
64
|
+
an array:
|
65
|
+
|
66
|
+
config.reverse_proxy.vhosts = {
|
67
|
+
"foo-test" => "foo.test",
|
68
|
+
"bar" => "bar.test"
|
69
|
+
"bar-altport" => {:host => "bar.test", :port => 8080}
|
70
|
+
}
|
71
|
+
|
72
|
+
As you can see, this allows you to define which port to connect to
|
73
|
+
instead of the default port (which is port 80).
|
74
|
+
|
75
|
+
|
63
76
|
## Adding proxy support to your application
|
64
77
|
|
65
78
|
This plugin will instruct NGINX to pass the following headers to your
|
@@ -5,8 +5,6 @@ module VagrantPlugins
|
|
5
5
|
module Action
|
6
6
|
include Vagrant::Action::Builtin
|
7
7
|
|
8
|
-
# We (currently) don't distinguish between upping and downing a
|
9
|
-
# machine; we always write a complete config with all machines.
|
10
8
|
def self.add_machine
|
11
9
|
Vagrant::Action::Builder.new.tap do |builder|
|
12
10
|
builder.use(ConfigValidate)
|
@@ -59,19 +59,24 @@ module VagrantPlugins
|
|
59
59
|
if @config.reverse_proxy.vhosts
|
60
60
|
vhosts = @config.reverse_proxy.vhosts
|
61
61
|
else
|
62
|
-
|
62
|
+
host = machine.config.vm.hostname || machine.name
|
63
|
+
vhosts = {host => host}
|
63
64
|
end
|
64
65
|
ip = get_ip_address(machine)
|
65
|
-
vhosts.collect do |vhost|
|
66
|
-
|
67
|
-
|
66
|
+
vhosts.collect do |path, vhost|
|
67
|
+
# Rewrites are matches literally by nginx, which means
|
68
|
+
# http://host:80/... will NOT match http://host/...!
|
69
|
+
port_suffix = vhost[:port] == 80 ? '' : ":#{vhost[:port]}"
|
70
|
+
<<EOF
|
71
|
+
location /#{path}/ {
|
72
|
+
proxy_set_header Host #{vhost[:host]};
|
68
73
|
proxy_set_header X-Forwarded-For $remote_addr;
|
69
74
|
proxy_set_header X-Forwarded-Host $host;
|
70
75
|
proxy_set_header X-Forwarded-Port $server_port;
|
71
|
-
proxy_set_header X-Base-Url http://$host:$server_port/#{
|
76
|
+
proxy_set_header X-Base-Url http://$host:$server_port/#{path}/;
|
72
77
|
|
73
|
-
proxy_pass http://#{ip}/;
|
74
|
-
proxy_redirect http://#{vhost}/ /#{
|
78
|
+
proxy_pass http://#{ip}#{port_suffix}/;
|
79
|
+
proxy_redirect http://#{vhost[:host]}#{port_suffix}/ /#{path}/;
|
75
80
|
}
|
76
81
|
EOF
|
77
82
|
end.join("\n")
|
@@ -12,7 +12,23 @@ module VagrantPlugins
|
|
12
12
|
|
13
13
|
def finalize!
|
14
14
|
@enabled = false if @enabled == UNSET_VALUE
|
15
|
-
|
15
|
+
if @vhosts == UNSET_VALUE
|
16
|
+
@vhosts = nil
|
17
|
+
elsif @vhosts.is_a?(Array)
|
18
|
+
# Convert to canonical hash form of
|
19
|
+
# {path => {:host => name, :port => num}}
|
20
|
+
vhosts_hash = {}
|
21
|
+
@vhosts.each {|entry| vhosts_hash[entry] = {:host => entry, :port => 80} }
|
22
|
+
@vhosts = vhosts_hash
|
23
|
+
elsif @vhosts.is_a?(Hash)
|
24
|
+
@vhosts.each do |key, value|
|
25
|
+
if (value.is_a?(String))
|
26
|
+
@vhosts[key] = {:host => value, :port => 80}
|
27
|
+
else
|
28
|
+
value[:port] ||= 80
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
16
32
|
end
|
17
33
|
|
18
34
|
def validate(machine)
|
@@ -22,8 +38,27 @@ module VagrantPlugins
|
|
22
38
|
errors << 'enabled must be a boolean'
|
23
39
|
end
|
24
40
|
|
25
|
-
|
26
|
-
|
41
|
+
if @vhosts.instance_of?(Array)
|
42
|
+
@vhosts.each do |vhost|
|
43
|
+
unless (vhost.is_a?(String) || vhost.is_a?(Hash))
|
44
|
+
errors << "vhost #{vhost} is not a string or hash"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
elsif @vhosts.instance_of?(Hash)
|
48
|
+
@vhosts.each do |path, vhost|
|
49
|
+
unless path.is_a?(String)
|
50
|
+
errors << "vhost path `#{path}' is not a string"
|
51
|
+
end
|
52
|
+
unless vhost.is_a?(String) || vhost.is_a?(Hash)
|
53
|
+
errors << "Vhost `#{vhost}' for path `#{path}' is not a string or hash"
|
54
|
+
else
|
55
|
+
if vhost.is_a?(Hash) && !vhost[:host]
|
56
|
+
errors << "Vhost `#{vhost}' for path `#{path}' has no :host key"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
elsif @vhosts != nil && @vhosts != UNSET_VALUE
|
61
|
+
errors << 'vhosts must be an array of hostnames, a string=>string hash or nil'
|
27
62
|
end
|
28
63
|
|
29
64
|
{ 'Reverse proxy configuration' => errors.compact }
|
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
|
+
version: 0.2.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-
|
11
|
+
date: 2016-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|