Respect NO_PROXY env var (#33742)

Closes #22991

Release Notes:

- Added support for respecting the NO_PROXY environment variable when
any HTTP proxy is configured. For the exact NO_PROXY env var strings
that are supported, see [NoProxy in the reqwest
docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_env).

---------

Co-authored-by: Peter Tripp <peter@zed.dev>
This commit is contained in:
Richard Feldman
2025-07-02 10:05:34 -04:00
committed by GitHub
co-authored by Peter Tripp
parent c15d02454e
commit 903212b7f5
3 changed files with 7 additions and 3 deletions
+2 -1
View File
@@ -1784,7 +1784,8 @@
// `socks5h`. `http` will be used when no scheme is specified.
//
// By default no proxy will be used, or Zed will try get proxy settings from
// environment variables.
// environment variables. If certain hosts should not be proxied,
// set the `no_proxy` environment variable and provide a comma-separated list.
//
// Examples:
// - "proxy": "socks5h://localhost:10808"
+2 -1
View File
@@ -61,7 +61,8 @@ impl ReqwestClient {
})
.ok()
}) {
client = client.proxy(proxy);
// Respect NO_PROXY env var
client = client.proxy(proxy.no_proxy(reqwest::NoProxy::from_env()));
client_has_proxy = true;
} else {
client_has_proxy = false;
+3 -1
View File
@@ -2212,7 +2212,7 @@ The following URI schemes are supported:
`http` will be used when no scheme is specified.
By default no proxy will be used, or Zed will attempt to retrieve proxy settings from environment variables, such as `http_proxy`, `HTTP_PROXY`, `https_proxy`, `HTTPS_PROXY`, `all_proxy`, `ALL_PROXY`.
By default no proxy will be used, or Zed will attempt to retrieve proxy settings from environment variables, such as `http_proxy`, `HTTP_PROXY`, `https_proxy`, `HTTPS_PROXY`, `all_proxy`, `ALL_PROXY`, `no_proxy` and `NO_PROXY`.
For example, to set an `http` proxy, add the following to your settings:
@@ -2230,6 +2230,8 @@ Or to set a `socks5` proxy:
}
```
If you wish to exclude certain hosts from using the proxy, set the `NO_PROXY` environment variable. This accepts a comma-separated list of hostnames, host suffixes, IPv4/IPv6 addresses or blocks that should not use the proxy. For example if your environment included `NO_PROXY="google.com, 192.168.1.0/24"` all hosts in `192.168.1.*`, `google.com` and `*.google.com` would bypass the proxy. See [reqwest NoProxy docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_string) for more.
## Preview tabs
- Description: