好好爱自己!

【转】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
复制代码

 https://www.cnblogs.com/scue/p/3891879.html

------------

---------------------

 

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
posted @ 2021-11-05 10:28  立志做一个好的程序员  阅读(2253)  评论(0编辑  收藏  举报

不断学习创作,与自己快乐相处