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

一,場景:

有些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












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章