-
Notifications
You must be signed in to change notification settings - Fork 21
Proxy Configuration Issues
We found out that the network proxy configuration is handled a bit differently in Ruby than by other tools.
Usually you define the HTTP proxy via http_proxy (or HTTP_PROXY) environment
variable. The white list of the hosts (or domains) which should be always
connected directly without the proxy is defined in the no_proxy variable.
The usual value looks like localhost, 127.0.0.1, foo.bar.com, .example.com.
The first two values disable proxy for the loopback device, the next one for the
foo.bar.com host and the last one for all hosts in the example.com domain.
However, Ruby by default treats the no_proxy value a bit differently.
There are some differences how Ruby handles the no_proxy value:
-
Ruby does not ignore spaces around the values, with the example above it would skip proxy for the
␣foo.bar.comhost but use it forfoo.bar.com. This is completely unexpected behavior. -
Ruby does not treat values starting with a dot as domain names. Instead it tries to match all values as both host name and domain name.
That means the
.example.comdoes not work as expected - host name and domain names cannot contain dots so this will actually never match.
There are some rules how to set no_proxy to workaround the issue:
-
Do not use spaces.
-
Specify domains without the leading dot.
Regarding the dots - to be sure that the no_proxy value works in Ruby and also
with the other tools then for domains you should use both versions - with a leading
dot and without it.
So instead of the localhost, 127.0.0.1, foo.bar.com, .example.com example above
you should use localhost,127.0.0.1,foo.bar.com,.example.com,example.com.