linux设置http/https proxy及忽略proxy的方法

一,场景:php

有些linux服务器处于内网,而且没有公网ip,故要想与外网进行http/https通讯只能经过nat或者加proxy的方式。nat服务器有网段的限制,而http/https proxy代理则没有,使用起来也方便。linux


linux系统设置http/https proxy的方法,在/etc/bashrc或者/etc/profile中添加以下环境变量:nginx

export http_proxy=http://1.1.1.1:8082
export https_proxy=http://1.1.1.1:8082


二,问题bash

使用如上配置http/https proxy的时候碰见两个问题:服务器

1,本机去访问一个没有域名解析可是绑定hosts文件的域名的时候,致使访问失败ide

2,php-fpm中跑的php代码访问外网有域名解析的接口,访问失败php-fpm


三,问题缘由
ui

1,应该是因为系统环境变量的优先级别高于/etc/hosts文件,致使本机去访问一个没有域名解析可是绑定hosts文件的域名的时候仍然走http/https代理,而代理server访问不到域名所绑定的ip(例如这个ip是内网ip,可是加的代理是公网的代理)从而致使访问失败。spa

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
相关文章
相关标签/搜索