這個需求是始於工作上的需要,因為我們服務的客戶散佈在世界各地,當主機超過負荷時;主機需要有橫向擴展的功能,因為安全需要所以客戶端需要設定我方某台API主機的IP為白名單, 才能正常的回呼客戶端API。簡單來說對外的主機只能用一台該台主機就拿來安裝 Squid 當 正向代理 的功能機。
安裝 Squid
指令:
sudo apt install squid
設定 Squid
怕設定錯誤先備份一下設定檔
指令:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bk
開始設定 squid.conf
指令:
sudo nano /etc/squid/squid.conf
找到 acl CONNECT method CONNECT
#限定某個網段才允許使用Proxy
acl our_networks src 172.2.0.0/16
http_access allow our_networks
#Proxy 監聽的port 預設為 3128 可改可不改
http_port 3128
假設裝設Squid 的主機IP為:172.2.3.11
Proxy 端驗證
指令:
tail -f /var/log/squid/access.log
其它要使用Proxy的主機 172.2.3.22
在客戶端主機 172.2.3.22 使用curl 測試 proxy
指令:
curl -x http://172.2.3.11:3128 -L https://www.webteach.tw
然後在 https://www.webteach.tw 那台主機確認來訪的IP為Proxy的IP
指令:
tail -f /var/log/apache2/access.log
由於讓客戶回呼是使用curl 所以要幫curl設定proxy
在客戶端主機 172.2.3.22修改環境變數
export http_proxy=http://172.2.3.11:3128/
export https_proxy=$http_proxy
設定好就可以直接使用 curl 就不用加 -x 參數
curl -L https://www.webteach.tw
2021-01-14 更新
swoole client 端 proxy 設定
$Client->set(
array(
'http_proxy_host' => '172.31.2.16',
'http_proxy_port' => 3110)
);
參考網址:
https://www.ichiayi.com/wiki/tech/squid
https://www.cyberciti.biz/faq/linux-unix-curl-command-with-proxy-username-password-http-options/
https://www.serverlab.ca/tutorials/linux/administration-linux/how-to-configure-proxy-on-ubuntu-18-04/
https://blog.longwin.com.tw/2014/04/curl-cli-use-proxy-2014/
https://wiki.swoole.com/#/client?id=http_proxy
https://tech.yj777.cn/swoole-websocket-behind-apache-mod_ssl-proxy/