This optional setting provides a way to specify one or more hosts where the connection should not be proxied. Similar settings are available in many applications. Unfortunately, there is no standard specification across the different implementations. Each one defines its own syntax and supported capabilities.
Remoting provides an implementation that is similar to a number of other applications and systems. Its simple rules provide sufficient power and flexibility for many needs.
Rules:
- Environment variable may be named
NO_PROXY
orno_proxy
. - Different specification pieces may be separated by a comma (
,
) or a pipe (|
). - Each piece may specify an IP address, a network, or a host / domain.
- An IP address may be IPv4 or IPv6.
- An IPv6 address may be expressed in full or compressed form.
- A network is expressed in CIDR notation, for example,
192.168.17.0/24
. - Localhost and loopback addresses are not proxied by default.
- All subdomains matching a domain or host are not proxied.
- A
NO_PROXY
setting ofjenkins.io
matchesrepo.jenkins.io
,sub.sub.jenkins.io
, andjenkins.io
. It also matchesmyjenkins.io
. - The following forms are identical:
jenkins.io
,.jenkins.io
, and*.jenkins.io
. - All other notations are ignored.
The exact implementation has changed in different remoting versions. The 3.28 release of Remoting clarified and expanded a number of these capabilities. All specifications that worked prior to 3.28 should still work. Enhancements added at 3.28 include environment variable capitalization, pipe separation, compressed IPv6 form, networks, and simple hostnames or root domains. The Changelog provides information on some of the prior changes.