Linux 设置全局代理

2024-12-22 506点热度 0条评论

在 Linux 系统中设置全局代理,可以通过配置环境变量来实现。

  • http_proxy 用于配置 HTTP 请求的代理。
  • https_proxy 用于配置 HTTPS 请求的代理。
  • ftp_proxy 用于配置 FTP 请求的代理。
  • all_proxy 用于配置所有协议的代理。它可以用于不区分协议的程序或工具。
  • no_proxy 用于设置不需要使用代理的地址或主机。可以列出多个地址,以逗号分隔。

环境变量的优先级

如果同时设置了多个代理环境变量,以下是它们的优先级顺序(从高到低):

  1. 协议特定代理:
    • http_proxy
    • https_proxy
    • ftp_proxy
    • socks_proxy
  2. 通用代理:
    • all_proxy
  3. 不使用代理的地址:
    • no_proxy

代理设置

根据自己的需求选择不同的代理设置方式,参考如下格式快速进行设置

HTTP/HTTPS 代理

export http_proxy="http://proxy_address:port"
export https_proxy="http://proxy_address:port"
export ftp_proxy="http://proxy_address:port"

全局代理

export all_proxy="http://proxy_address:port"

认证代理

如果代理服务器需要身份验证(用户名和密码),可以在代理 URL 中指定用户名和密码。

export http_proxy="http://username:password@proxy_address:port"
export https_proxy="http://username:password@proxy_address:port"
export ftp_proxy="http://username:password@proxy_address:port"

特定协议的代理设置(其他协议)

用于 SOCKS 代理配置(支持 SOCKS4 和 SOCKS5)。一些程序(如 curlwget 等)也支持这个环境变量。

# 用于 SOCKS 代理配置(支持 SOCKS4 和 SOCKS5)。一些程序(如 curl、wget 等)也支持这个环境变量。
export socks_proxy="socks5://proxy_address:port"

# 这是 socks_proxy 的变体,专门针对 SOCKS5 代理配置。
export socks5_proxy="socks5://proxy_address:port"

示例配置

假设你希望设置 HTTP 和 HTTPS 的代理,同时希望指定本地地址不通过代理访问,可以使用以下环境变量:

export http_proxy="http://proxy_address:8080"
export https_proxy="http://proxy_address:8080"
export no_proxy="localhost,127.0.0.1,.example.com"

如果还希望为所有协议统一设置代理,可以同时设置 all_proxy

export all_proxy="http://proxy_address:8080"
export all_proxy="socks5://10.0.0.200:7891"
export ALL_PROXY="socks5h://10.0.0.200:7891"

设置永久代理

如果希望永久应用这些代理设置,可以将上述环境变量添加到以下文件之一,取决于你的系统和使用的 shell:

  • Bash Shell:
    将代理设置添加到 ~/.bashrc/etc/profile 中。
  • Zsh Shell:
    将代理设置添加到 ~/.zshrc 中。
  • System-wide:
    如果希望所有用户都使用这些设置,可以将代理环境变量添加到 /etc/environment/etc/profile 文件中。

例如,在 ~/.bashrc 中添加:

export http_proxy="http://proxy_address:8080"
export https_proxy="http://proxy_address:8080"
export no_proxy="localhost,127.0.0.1,.example.com"
export all_proxy="http://proxy_address:8080"

然后,执行 source ~/.bashrc 使设置生效。

取消代理

要取消已经设置的代理,你只需要清除之前配置的代理环境变量。

临时取消代理(当前会话)

如果你仅仅希望在当前终端会话中取消代理,可以使用 unset 命令来删除相关的环境变量:

unset http_proxy
unset https_proxy
unset ftp_proxy
unset all_proxy
unset no_proxy
unset socks_proxy

此操作会立即取消代理设置,但只会对当前会话生效。如果关闭终端窗口或重新启动系统,代理设置仍然会生效。

永久取消代理

如果你希望永久取消代理设置(即在系统重启后生效),需要编辑相关的配置文件,并删除其中的代理设置。

1. 删除 .bashrc.zshrc 中的代理设置

如果你在 ~/.bashrc~/.zshrc 或其他用户的 shell 配置文件中设置了代理,可以编辑该文件并删除相关的代理行。

打开 ~/.bashrc~/.zshrc 文件:

nano ~/.bashrc
# 或者
nano ~/.zshrc

查找并删除类似以下的行:

export http_proxy="http://proxy_address:port"
export https_proxy="http://proxy_address:port"
export all_proxy="http://proxy_address:port"
export no_proxy="localhost,127.0.0.1,.example.com"

保存并退出后,执行以下命令使更改生效:

source ~/.bashrc  # 或者 source ~/.zshrc

2. 删除 /etc/environment/etc/profile 中的代理设置

如果你将代理设置添加到系统范围的配置文件中(如 /etc/environment/etc/profile),则需要编辑这些文件并删除代理设置。

例如,编辑 /etc/environment 文件:

sudo nano /etc/environment

然后删除以下行(如果存在):

http_proxy="http://proxy_address:port"
https_proxy="http://proxy_address:port"
ftp_proxy="http://proxy_address:port"
all_proxy="http://proxy_address:port"
no_proxy="localhost,127.0.0.1,.example.com"

保存文件并退出后,重新启动计算机或重新登录以使更改生效。

检查代理是否被完全清除

清除代理环境变量后,可以使用以下命令检查是否仍然有代理配置:

echo $http_proxy
echo $https_proxy
echo $ftp_proxy
echo $all_proxy
echo $no_proxy

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

文章评论