@@ -6,7 +6,7 @@ class ReverseProxy
6
6
def initialize ( app = nil , &b )
7
7
@app = app || lambda { [ 404 , [ ] , [ ] ] }
8
8
@matchers = [ ]
9
- @global_options = { :preserve_host => false , :matching => :all }
9
+ @global_options = { :preserve_host => false , :matching => :all , :verify_ssl => true }
10
10
instance_eval &b if block_given?
11
11
end
12
12
@@ -26,9 +26,15 @@ def call(env)
26
26
headers [ 'HOST' ] = uri . host if all_opts [ :preserve_host ]
27
27
28
28
session = Net ::HTTP . new ( uri . host , uri . port )
29
- session . use_ssl = ( uri . scheme == 'https' )
30
- session . verify_mode = OpenSSL ::SSL ::VERIFY_NONE
31
29
session . read_timeout = all_opts [ :timeout ] if all_opts [ :timeout ]
30
+
31
+ session . use_ssl = ( uri . scheme == 'https' )
32
+ if uri . scheme == 'https' && all_opts [ :verify_ssl ]
33
+ session . verify_mode = OpenSSL ::SSL ::VERIFY_PEER
34
+ else
35
+ # DO NOT DO THIS IN PRODUCTION !!!
36
+ session . verify_mode = OpenSSL ::SSL ::VERIFY_NONE
37
+ end
32
38
session . start { |http |
33
39
m = rackreq . request_method
34
40
case m
@@ -54,7 +60,7 @@ def call(env)
54
60
[ res . code , create_response_headers ( res ) , [ body ] ]
55
61
}
56
62
end
57
-
63
+
58
64
private
59
65
60
66
def get_matcher path
0 commit comments