【转】linux设置http/https proxy及忽略proxy的方法
原文: https://www.cnblogs.com/marklove/p/10805432.html
. 设定代理:. ~/.proxyenv
1 #!/bin/sh 2 3 # for terminal 4 export proxyserveraddr=123.123.123.123 5 export proxyserverport=8087 6 export HTTP_PROXY="http://$proxyserveraddr:$proxyserverport/" 7 export HTTPS_PROXY="https://$proxyserveraddr:$proxyserverport/" 8 export FTP_PROXY="ftp://$proxyserveraddr:$proxyserverport/" 9 export SOCKS_PROXY="socks://$proxyserveraddr:$proxyserverport/" 10 export NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com,200.200..;11.11.0.0;" 11 export http_proxy="http://$proxyserveraddr:$proxyserverport/" 12 export https_proxy="https://$proxyserveraddr:$proxyserverport/" 13 export ftp_proxy="ftp://$proxyserveraddr:$proxyserverport/" 14 export socks_proxy="socks://$proxyserveraddr:$proxyserverport/" 15 export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,200.200..;11.11.0.0;" 16 17 # for chrome,firefox 18 gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '11.11.0.0/16', '200.200.0.0/16', '*.localdomain.com' ]" 19 20 # for apt-get 21 cat <<-EOF| sudo tee /etc/apt/apt.conf 22 Acquire::http::proxy "http://$proxyserveraddr:$proxyserverport/"; 23 Acquire::https::proxy "https://$proxyserveraddr:$proxyserverport/"; 24 Acquire::ftp::proxy "ftp://$proxyserveraddr:$proxyserverport/"; 25 Acquire::socks::proxy "socks://$proxyserveraddr:$proxyserverport/"; 26 EOF
2. 取消代理:. ~/.unproxyenv
1 #!/bin/sh 2 unset proxyserveraddr 3 unset proxyserverport 4 unset HTTP_PROXY 5 unset HTTPS_PROXY 6 unset FTP_PROXY 7 unset SOCKS_PROXY 8 unset NO_PROXY 9 unset http_proxy 10 unset https_proxy 11 unset ftp_proxy 12 unset socks_proxy 13 unset no_proxy 14 gsettings reset org.gnome.system.proxy ignore-hosts 15 echo -n ""|sudo tee /etc/apt/apt.conf
---------------------
msys2设置网络代理
在文件 .bashrc 中添加
export http_proxy="proxy IP:port"
如
export http_proxy="192.168.0.1:8080"
export https_proxy="192.168.0.1:8080"
一,场景:
有些linux服务器处于内网,并且没有公网ip,故要想与外网进行http/https通信只能通过nat或者加proxy的方式。nat服务器有网段的限制,而http/https proxy代理则没有,使用起来也方便。
linux系统设置http/https proxy的方法,在/etc/bashrc或者/etc/profile中添加如下环境变量:
export http_proxy=http://1.1.1.1:8082
export https_proxy=http://1.1.1.1:8082
二,问题
使用如上配置http/https proxy的时候遇见两个问题:
1,本机去访问一个没有域名解析但是绑定hosts文件的域名的时候,导致访问失败
2,php-fpm中跑的php代码访问外网有域名解析的接口,访问失败
三,问题原因
1,应该是由于系统环境变量的优先级别高于/etc/hosts文件,导致本机去访问一个没有域名解析但是绑定hosts文件的域名的时候仍然走http/https代理,而代理server访问不到域名所绑定的ip(例如这个ip是内网ip,但是加的代理是公网的代理)从而导致访问失败。
2,php-fpm默认没有加载到系统的http/https proxy的环境变量设置,需要修改php-fpm的配置来解决问题。
四,问题解决
1,对那些没有域名解析通过绑定hosts文件来访问的域名,不让其走http/https代理
在/etc/bashrc或者/etc/profile中添加如下环境变量:
export no_proxy='a.test.com,127.0.0.1,2.2.2.2'
2,添加php-fpm关于env的如下配置,然后重启php-fpm即可:
env[http_proxy] = "http_proxy=http://1.1.1.1:8082"
env[https_proxy] = "https_proxy=http://1.1.1.1:8082"
env[no_proxy] = "a.test.com,127.0.0.1,2.2.2.2"
五,扩展
1,用过的http/https正向proxy软件:
nginx
tinyproxy(简单好用,支持http/https协议)
squid(稳定简单好用,支持http/https协议)
2,squid 3.x正向proxy配置:
# cat /etc/squid/squid.conf
http_access allow all
http_port 8443
cache deny all
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2015-11-05 Redis hash 类型及操作